quasar 1.16.3 → 1.17.3

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 (308) hide show
  1. package/dist/api/BottomSheet.json +2 -2
  2. package/dist/api/Loading.json +0 -2
  3. package/dist/api/LoadingBar.json +1 -1
  4. package/dist/api/Notify.json +25 -25
  5. package/dist/api/QAjaxBar.json +23 -4
  6. package/dist/api/QAvatar.json +1 -1
  7. package/dist/api/QBreadcrumbsEl.json +32 -11
  8. package/dist/api/QBtn.json +35 -14
  9. package/dist/api/QBtnDropdown.json +36 -15
  10. package/dist/api/QBtnToggle.json +1 -1
  11. package/dist/api/QCarousel.json +7 -7
  12. package/dist/api/QCarouselSlide.json +2 -2
  13. package/dist/api/QChatMessage.json +1 -5
  14. package/dist/api/QChip.json +4 -4
  15. package/dist/api/QColor.json +6 -0
  16. package/dist/api/QDialog.json +7 -1
  17. package/dist/api/QExpansionItem.json +34 -13
  18. package/dist/api/QFab.json +34 -2
  19. package/dist/api/QFabAction.json +9 -1
  20. package/dist/api/QField.json +80 -6
  21. package/dist/api/QFile.json +80 -6
  22. package/dist/api/QImg.json +2 -2
  23. package/dist/api/QInnerLoading.json +32 -0
  24. package/dist/api/QInput.json +82 -6
  25. package/dist/api/QItem.json +31 -10
  26. package/dist/api/QOptionGroup.json +58 -1
  27. package/dist/api/QPagination.json +4 -4
  28. package/dist/api/QParallax.json +1 -1
  29. package/dist/api/QPopupEdit.json +14 -7
  30. package/dist/api/QPullToRefresh.json +1 -1
  31. package/dist/api/QRange.json +581 -96
  32. package/dist/api/QRating.json +3 -3
  33. package/dist/api/QRouteTab.json +32 -12
  34. package/dist/api/QScrollArea.json +188 -20
  35. package/dist/api/QSelect.json +82 -10
  36. package/dist/api/QSeparator.json +1 -1
  37. package/dist/api/QSlider.json +499 -34
  38. package/dist/api/QStep.json +4 -4
  39. package/dist/api/QStepper.json +4 -4
  40. package/dist/api/QTab.json +1 -1
  41. package/dist/api/QTable.json +4 -4
  42. package/dist/api/QTabs.json +9 -0
  43. package/dist/api/QTimelineEntry.json +2 -2
  44. package/dist/api/QToggle.json +1 -1
  45. package/dist/api/QTree.json +7 -1
  46. package/dist/api/QVideo.json +10 -0
  47. package/dist/icon-set/bootstrap-icons.umd.min.js +1 -1
  48. package/dist/icon-set/eva-icons.umd.min.js +1 -1
  49. package/dist/icon-set/fontawesome-v5-pro.umd.min.js +1 -1
  50. package/dist/icon-set/fontawesome-v5.umd.min.js +1 -1
  51. package/dist/icon-set/ionicons-v4.umd.min.js +1 -1
  52. package/dist/icon-set/line-awesome.umd.min.js +1 -1
  53. package/dist/icon-set/material-icons-outlined.umd.min.js +1 -1
  54. package/dist/icon-set/material-icons-round.umd.min.js +1 -1
  55. package/dist/icon-set/material-icons-sharp.umd.min.js +1 -1
  56. package/dist/icon-set/material-icons.umd.min.js +1 -1
  57. package/dist/icon-set/mdi-v3.umd.min.js +1 -1
  58. package/dist/icon-set/mdi-v4.umd.min.js +1 -1
  59. package/dist/icon-set/mdi-v5.umd.min.js +1 -1
  60. package/dist/icon-set/mdi-v6.umd.min.js +1 -1
  61. package/dist/icon-set/svg-bootstrap-icons.umd.min.js +1 -1
  62. package/dist/icon-set/svg-eva-icons.umd.min.js +1 -1
  63. package/dist/icon-set/svg-fontawesome-v5.umd.min.js +1 -1
  64. package/dist/icon-set/svg-ionicons-v4.umd.min.js +1 -1
  65. package/dist/icon-set/svg-ionicons-v5.umd.min.js +1 -1
  66. package/dist/icon-set/svg-ionicons-v6.umd.min.js +6 -0
  67. package/dist/icon-set/svg-line-awesome.umd.min.js +1 -1
  68. package/dist/icon-set/svg-material-icons-outlined.umd.min.js +1 -1
  69. package/dist/icon-set/svg-material-icons-round.umd.min.js +1 -1
  70. package/dist/icon-set/svg-material-icons-sharp.umd.min.js +1 -1
  71. package/dist/icon-set/svg-material-icons.umd.min.js +1 -1
  72. package/dist/icon-set/svg-mdi-v4.umd.min.js +1 -1
  73. package/dist/icon-set/svg-mdi-v5.umd.min.js +1 -1
  74. package/dist/icon-set/svg-mdi-v6.umd.min.js +1 -1
  75. package/dist/icon-set/svg-themify.umd.min.js +1 -1
  76. package/dist/icon-set/themify.umd.min.js +1 -1
  77. package/dist/lang/ar.umd.min.js +2 -2
  78. package/dist/lang/az-latn.umd.min.js +1 -1
  79. package/dist/lang/bg.umd.min.js +1 -1
  80. package/dist/lang/ca.umd.min.js +1 -1
  81. package/dist/lang/cs.umd.min.js +1 -1
  82. package/dist/lang/da.umd.min.js +1 -1
  83. package/dist/lang/de.umd.min.js +1 -1
  84. package/dist/lang/el.umd.min.js +1 -1
  85. package/dist/lang/en-gb.umd.min.js +1 -1
  86. package/dist/lang/en-us.umd.min.js +1 -1
  87. package/dist/lang/eo.umd.min.js +1 -1
  88. package/dist/lang/es.umd.min.js +1 -1
  89. package/dist/lang/et.umd.min.js +1 -1
  90. package/dist/lang/fa-ir.umd.min.js +1 -1
  91. package/dist/lang/fa.umd.min.js +1 -1
  92. package/dist/lang/fi.umd.min.js +1 -1
  93. package/dist/lang/fr.umd.min.js +2 -2
  94. package/dist/lang/gn.umd.min.js +1 -1
  95. package/dist/lang/he.umd.min.js +1 -1
  96. package/dist/lang/hr.umd.min.js +1 -1
  97. package/dist/lang/hu.umd.min.js +1 -1
  98. package/dist/lang/id.umd.min.js +1 -1
  99. package/dist/lang/is.umd.min.js +1 -1
  100. package/dist/lang/it.umd.min.js +1 -1
  101. package/dist/lang/ja.umd.min.js +1 -1
  102. package/dist/lang/km.umd.min.js +1 -1
  103. package/dist/lang/ko-kr.umd.min.js +1 -1
  104. package/dist/lang/kur-ckb.umd.min.js +1 -1
  105. package/dist/lang/lu.umd.min.js +1 -1
  106. package/dist/lang/lv.umd.min.js +1 -1
  107. package/dist/lang/ml.umd.min.js +1 -1
  108. package/dist/lang/ms.umd.min.js +1 -1
  109. package/dist/lang/nb-no.umd.min.js +1 -1
  110. package/dist/lang/nl.umd.min.js +1 -1
  111. package/dist/lang/pl.umd.min.js +1 -1
  112. package/dist/lang/pt-br.umd.min.js +1 -1
  113. package/dist/lang/pt.umd.min.js +1 -1
  114. package/dist/lang/ro.umd.min.js +1 -1
  115. package/dist/lang/ru.umd.min.js +1 -1
  116. package/dist/lang/sk.umd.min.js +1 -1
  117. package/dist/lang/sl.umd.min.js +1 -1
  118. package/dist/lang/sr.umd.min.js +2 -2
  119. package/dist/lang/sv.umd.min.js +1 -1
  120. package/dist/lang/ta.umd.min.js +1 -1
  121. package/dist/lang/th.umd.min.js +1 -1
  122. package/dist/lang/tr.umd.min.js +1 -1
  123. package/dist/lang/ug.umd.min.js +2 -2
  124. package/dist/lang/uk.umd.min.js +1 -1
  125. package/dist/lang/vi.umd.min.js +1 -1
  126. package/dist/lang/zh-hans.umd.min.js +2 -2
  127. package/dist/lang/zh-hant.umd.min.js +2 -2
  128. package/dist/quasar.addon.css +1 -1
  129. package/dist/quasar.addon.rtl.css +1 -1
  130. package/dist/quasar.common.js +2 -2
  131. package/dist/quasar.css +380 -227
  132. package/dist/quasar.esm.js +2 -2
  133. package/dist/quasar.ie.polyfills.js +1 -1
  134. package/dist/quasar.ie.polyfills.umd.min.js +1 -1
  135. package/dist/quasar.min.css +1 -1
  136. package/dist/quasar.rtl.css +512 -303
  137. package/dist/quasar.rtl.min.css +1 -1
  138. package/dist/quasar.sass +328 -210
  139. package/dist/quasar.styl +328 -210
  140. package/dist/quasar.umd.js +3244 -1894
  141. package/dist/quasar.umd.min.js +2 -2
  142. package/dist/quasar.umd.modern.js +3199 -1875
  143. package/dist/quasar.umd.modern.min.js +2 -2
  144. package/dist/transform-asset-urls.json +20 -0
  145. package/dist/types/index.d.ts +427 -105
  146. package/dist/types/utils/scroll.d.ts +1 -0
  147. package/dist/vetur/quasar-attributes.json +320 -92
  148. package/dist/vetur/quasar-tags.json +76 -19
  149. package/dist/web-types/web-types.json +1296 -257
  150. package/icon-set/svg-ionicons-v6.js +225 -0
  151. package/lang/ar.js +1 -1
  152. package/lang/fa-ir.js +3 -1
  153. package/lang/fa.js +3 -1
  154. package/lang/fr.js +1 -1
  155. package/lang/index.json +1 -1
  156. package/lang/kur-ckb.js +2 -2
  157. package/lang/sr.js +4 -4
  158. package/lang/ug.js +48 -46
  159. package/lang/zh-hans.js +1 -1
  160. package/lang/zh-hant.js +18 -18
  161. package/package.json +1 -1
  162. package/src/api.extends.json +1 -2
  163. package/src/components/ajax-bar/QAjaxBar.js +48 -26
  164. package/src/components/ajax-bar/QAjaxBar.json +22 -4
  165. package/src/components/breadcrumbs/QBreadcrumbs.js +15 -11
  166. package/src/components/breadcrumbs/QBreadcrumbs.sass +0 -3
  167. package/src/components/breadcrumbs/QBreadcrumbs.styl +0 -3
  168. package/src/components/breadcrumbs/QBreadcrumbsEl.js +25 -9
  169. package/src/components/btn/QBtn.js +3 -3
  170. package/src/components/btn-dropdown/QBtnDropdown.sass +2 -0
  171. package/src/components/btn-dropdown/QBtnDropdown.styl +2 -0
  172. package/src/components/btn-toggle/QBtnToggle.js +4 -1
  173. package/src/components/carousel/QCarousel.js +6 -2
  174. package/src/components/carousel/QCarousel.json +9 -1
  175. package/src/components/carousel/QCarouselSlide.json +2 -2
  176. package/src/components/chat/QChatMessage.json +1 -1
  177. package/src/components/color/QColor.js +100 -85
  178. package/src/components/color/QColor.json +7 -0
  179. package/src/components/color/QColor.sass +14 -24
  180. package/src/components/color/QColor.styl +14 -24
  181. package/src/components/date/QDate.js +7 -1
  182. package/src/components/date/QDate.sass +2 -0
  183. package/src/components/date/QDate.styl +2 -0
  184. package/src/components/dialog/QDialog.js +8 -4
  185. package/src/components/dialog/QDialog.json +8 -1
  186. package/src/components/drawer/QDrawer.js +16 -15
  187. package/src/components/editor/QEditor.js +2 -2
  188. package/src/components/editor/QEditor.sass +13 -1
  189. package/src/components/editor/QEditor.styl +13 -1
  190. package/src/components/expansion-item/QExpansionItem.js +13 -11
  191. package/src/components/fab/QFab.js +20 -11
  192. package/src/components/fab/QFab.json +35 -0
  193. package/src/components/fab/QFabAction.js +16 -9
  194. package/src/components/fab/QFabAction.json +10 -0
  195. package/src/components/field/QField.js +28 -23
  196. package/src/components/field/__QField.json +72 -8
  197. package/src/components/file/QFile.js +12 -4
  198. package/src/components/file/QFile.sass +4 -3
  199. package/src/components/file/QFile.styl +4 -3
  200. package/src/components/footer/QFooter.js +1 -1
  201. package/src/components/form/QForm.js +1 -1
  202. package/src/components/header/QHeader.js +1 -1
  203. package/src/components/icon/QIcon.js +89 -75
  204. package/src/components/icon/QIcon.sass +2 -2
  205. package/src/components/icon/QIcon.styl +2 -2
  206. package/src/components/img/QImg.json +2 -2
  207. package/src/components/infinite-scroll/QInfiniteScroll.js +49 -36
  208. package/src/components/inner-loading/QInnerLoading.js +54 -22
  209. package/src/components/inner-loading/QInnerLoading.json +29 -0
  210. package/src/components/inner-loading/QInnerLoading.sass +3 -0
  211. package/src/components/inner-loading/QInnerLoading.styl +3 -0
  212. package/src/components/item/QItem.js +9 -15
  213. package/src/components/layout/QLayout.js +49 -0
  214. package/src/components/linear-progress/QLinearProgress.js +6 -2
  215. package/src/components/menu/QMenu.js +5 -1
  216. package/src/components/option-group/QOptionGroup.js +32 -22
  217. package/src/components/option-group/QOptionGroup.json +50 -1
  218. package/src/components/parallax/QParallax.js +3 -0
  219. package/src/components/parallax/QParallax.json +1 -1
  220. package/src/components/popup-edit/QPopupEdit.js +41 -16
  221. package/src/components/popup-edit/QPopupEdit.json +15 -8
  222. package/src/components/range/QRange.js +223 -278
  223. package/src/components/range/QRange.json +11 -122
  224. package/src/components/rating/QRating.js +56 -38
  225. package/src/components/rating/QRating.json +3 -3
  226. package/src/components/rating/QRating.sass +8 -6
  227. package/src/components/rating/QRating.styl +8 -6
  228. package/src/components/resize-observer/QResizeObserver.js +15 -10
  229. package/src/components/scroll-area/QScrollArea.js +342 -126
  230. package/src/components/scroll-area/QScrollArea.json +164 -20
  231. package/src/components/scroll-area/QScrollArea.sass +5 -0
  232. package/src/components/scroll-area/QScrollArea.styl +5 -0
  233. package/src/components/scroll-observer/QScrollObserver.js +12 -7
  234. package/src/components/select/QSelect.js +8 -2
  235. package/src/components/select/QSelect.json +1 -1
  236. package/src/components/separator/QSeparator.js +0 -1
  237. package/src/components/separator/QSeparator.json +1 -1
  238. package/src/components/slider/QSlider.js +97 -140
  239. package/src/components/slider/QSlider.json +1 -122
  240. package/src/components/slider/QSlider.sass +205 -139
  241. package/src/components/slider/QSlider.styl +205 -139
  242. package/src/components/slider/slider-utils.js +468 -123
  243. package/src/components/slider/slider-utils.json +546 -0
  244. package/src/components/stepper/QStepper.js +1 -1
  245. package/src/components/stepper/QStepper.sass +25 -26
  246. package/src/components/stepper/QStepper.styl +25 -26
  247. package/src/components/table/QTable.sass +3 -0
  248. package/src/components/table/QTable.styl +3 -0
  249. package/src/components/tabs/QRouteTab.js +13 -13
  250. package/src/components/tabs/QRouteTab.json +0 -7
  251. package/src/components/tabs/QTab.js +71 -20
  252. package/src/components/tabs/QTabs.js +237 -52
  253. package/src/components/tabs/QTabs.json +8 -0
  254. package/src/components/tabs/QTabs.sass +6 -6
  255. package/src/components/tabs/QTabs.styl +6 -6
  256. package/src/components/time/QTime.js +6 -2
  257. package/src/components/timeline/QTimeline.sass +1 -2
  258. package/src/components/timeline/QTimeline.styl +1 -2
  259. package/src/components/timeline/QTimelineEntry.json +1 -1
  260. package/src/components/tree/QTree.js +10 -6
  261. package/src/components/tree/QTree.json +5 -0
  262. package/src/components/tree/QTree.sass +58 -4
  263. package/src/components/tree/QTree.styl +58 -4
  264. package/src/components/uploader/QUploaderBase.js +15 -19
  265. package/src/components/video/QVideo.js +4 -1
  266. package/src/components/video/QVideo.json +11 -0
  267. package/src/components/virtual-scroll/QVirtualScroll.sass +1 -0
  268. package/src/components/virtual-scroll/QVirtualScroll.styl +1 -0
  269. package/src/css/core/helpers.sass +3 -0
  270. package/src/css/core/helpers.styl +3 -0
  271. package/src/css/core/positioning.sass +5 -0
  272. package/src/css/core/positioning.styl +5 -0
  273. package/src/css/variables.sass +4 -6
  274. package/src/css/variables.styl +4 -6
  275. package/src/directives/Scroll.js +2 -2
  276. package/src/directives/ScrollFire.js +1 -0
  277. package/src/ie-compat/ie.js +13 -13
  278. package/src/install.js +1 -1
  279. package/src/lang.js +7 -4
  280. package/src/mixins/anchor.js +3 -13
  281. package/src/mixins/btn.js +33 -38
  282. package/src/mixins/btn.json +26 -11
  283. package/src/mixins/file.js +27 -5
  284. package/src/mixins/fullscreen.js +16 -4
  285. package/src/mixins/portal.js +10 -10
  286. package/src/mixins/router-link.js +88 -14
  287. package/src/mixins/router-link.json +26 -10
  288. package/src/mixins/validate.js +33 -15
  289. package/src/mixins/virtual-scroll.js +40 -42
  290. package/src/plugins/AppFullscreen.js +41 -16
  291. package/src/plugins/BottomSheet.json +1 -1
  292. package/src/plugins/Cookies.js +1 -1
  293. package/src/plugins/Loading.js +8 -0
  294. package/src/plugins/LoadingBar.js +9 -0
  295. package/src/plugins/LoadingBar.json +1 -1
  296. package/src/plugins/Notify.js +351 -333
  297. package/src/plugins/Notify.json +20 -20
  298. package/src/plugins/Notify.sass +9 -3
  299. package/src/plugins/Notify.styl +9 -3
  300. package/src/utils/clone.js +53 -4
  301. package/src/utils/date.js +134 -69
  302. package/src/utils/dom.js +28 -9
  303. package/src/utils/extend.js +2 -2
  304. package/src/utils/focus-manager.js +8 -10
  305. package/src/utils/global-dialog.js +18 -1
  306. package/src/utils/is.js +2 -2
  307. package/src/utils/morph.js +2 -12
  308. package/src/utils/scroll.js +71 -35
@@ -47,9 +47,9 @@
47
47
 
48
48
  "avatar": {
49
49
  "type": "String",
50
- "desc": "URL to an avatar/image; Suggestion: use statics folder",
50
+ "desc": "URL to an avatar/image; Suggestion: use public folder",
51
51
  "examples": [
52
- "(statics folder) statics/img/something.png",
52
+ "(public folder) img/something.png",
53
53
  "(relative path format) require('./my_img.jpg')",
54
54
  "(URL) https://some-site.net/some-img.gif"
55
55
  ]
@@ -217,9 +217,9 @@
217
217
 
218
218
  "avatar": {
219
219
  "type": "String",
220
- "desc": "URL to an avatar/image; Suggestion: use statics folder",
220
+ "desc": "URL to an avatar/image; Suggestion: use public folder",
221
221
  "examples": [
222
- "(statics folder) statics/img/something.png",
222
+ "(public folder) img/something.png",
223
223
  "(relative path format) require('./my_img.jpg')",
224
224
  "(URL) https://some-site.net/some-img.gif"
225
225
  ]
@@ -278,7 +278,7 @@
278
278
  "desc": "Style definitions to be attributed to the badge",
279
279
  "examples": [
280
280
  "background-color: #ff0000",
281
- ":content-style=\"{ backgroundColor: '#ff0000' }\""
281
+ "{ backgroundColor: '#ff0000' }"
282
282
  ],
283
283
  "addedIn": "v1.9.0"
284
284
  },
@@ -287,7 +287,7 @@
287
287
  "desc": "Class definitions to be attributed to the badge",
288
288
  "examples": [
289
289
  "my-special-class",
290
- ":content-class=\"{ 'my-special-class': <condition> }\""
290
+ "{ 'my-special-class': <condition> }"
291
291
  ],
292
292
  "addedIn": "v1.9.0"
293
293
  },
@@ -302,7 +302,7 @@
302
302
  "desc": "Class definitions to be attributed to the progress bar",
303
303
  "examples": [
304
304
  "my-special-class",
305
- ":content-class=\"{ 'my-special-class': <condition> }\""
305
+ "{ 'my-special-class': <condition> }"
306
306
  ],
307
307
  "addedIn": "v1.9.0"
308
308
  },
@@ -415,9 +415,9 @@
415
415
 
416
416
  "avatar": {
417
417
  "type": "String",
418
- "desc": "URL to an avatar/image; Suggestion: use statics folder",
418
+ "desc": "URL to an avatar/image; Suggestion: use public folder",
419
419
  "examples": [
420
- "(statics folder) statics/img/something.png",
420
+ "(public folder) img/something.png",
421
421
  "(relative path format) require('./my_img.jpg')",
422
422
  "(URL) https://some-site.net/some-img.gif"
423
423
  ]
@@ -440,7 +440,7 @@
440
440
  "desc": "Class definitions to be attributed to the progress bar",
441
441
  "examples": [
442
442
  "my-special-class",
443
- ":content-class=\"{ 'my-special-class': <condition> }\""
443
+ "{ 'my-special-class': <condition> }"
444
444
  ],
445
445
  "addedIn": "v1.9.0"
446
446
  },
@@ -556,9 +556,9 @@
556
556
 
557
557
  "avatar": {
558
558
  "type": "String",
559
- "desc": "URL to an avatar/image; Suggestion: use statics folder",
559
+ "desc": "URL to an avatar/image; Suggestion: use public folder",
560
560
  "examples": [
561
- "(statics folder) statics/img/something.png",
561
+ "(public folder) img/something.png",
562
562
  "(relative path format) require('./my_img.jpg')",
563
563
  "(URL) https://some-site.net/some-img.gif"
564
564
  ]
@@ -609,7 +609,7 @@
609
609
  "desc": "Style definitions to be attributed to the badge",
610
610
  "examples": [
611
611
  "background-color: #ff0000",
612
- ":content-style=\"{ backgroundColor: '#ff0000' }\""
612
+ "{ backgroundColor: '#ff0000' }"
613
613
  ],
614
614
  "addedIn": "v1.9.0"
615
615
  },
@@ -618,7 +618,7 @@
618
618
  "desc": "Class definitions to be attributed to the badge",
619
619
  "examples": [
620
620
  "my-special-class",
621
- ":content-class=\"{ 'my-special-class': <condition> }\""
621
+ "{ 'my-special-class': <condition> }"
622
622
  ],
623
623
  "addedIn": "v1.9.0"
624
624
  },
@@ -633,7 +633,7 @@
633
633
  "desc": "Class definitions to be attributed to the progress bar",
634
634
  "examples": [
635
635
  "my-special-class",
636
- ":content-class=\"{ 'my-special-class': <condition> }\""
636
+ "{ 'my-special-class': <condition> }"
637
637
  ],
638
638
  "addedIn": "v1.9.0"
639
639
  },
@@ -750,9 +750,9 @@
750
750
 
751
751
  "avatar": {
752
752
  "type": "String",
753
- "desc": "URL to an avatar/image; Suggestion: use statics folder",
753
+ "desc": "URL to an avatar/image; Suggestion: use public folder",
754
754
  "examples": [
755
- "(statics folder) statics/img/something.png",
755
+ "(public folder) img/something.png",
756
756
  "(relative path format) require('./my_img.jpg')",
757
757
  "(URL) https://some-site.net/some-img.gif"
758
758
  ]
@@ -803,7 +803,7 @@
803
803
  "desc": "Style definitions to be attributed to the badge",
804
804
  "examples": [
805
805
  "background-color: #ff0000",
806
- ":content-style=\"{ backgroundColor: '#ff0000' }\""
806
+ "{ backgroundColor: '#ff0000' }"
807
807
  ],
808
808
  "addedIn": "v1.9.0"
809
809
  },
@@ -812,7 +812,7 @@
812
812
  "desc": "Class definitions to be attributed to the badge",
813
813
  "examples": [
814
814
  "my-special-class",
815
- ":content-class=\"{ 'my-special-class': <condition> }\""
815
+ "{ 'my-special-class': <condition> }"
816
816
  ],
817
817
  "addedIn": "v1.9.0"
818
818
  },
@@ -827,7 +827,7 @@
827
827
  "desc": "Class definitions to be attributed to the progress bar",
828
828
  "examples": [
829
829
  "my-special-class",
830
- ":content-class=\"{ 'my-special-class': <condition> }\""
830
+ "{ 'my-special-class': <condition> }"
831
831
  ],
832
832
  "addedIn": "v1.9.0"
833
833
  },
@@ -40,16 +40,22 @@ body.q-ios-padding .q-notifications__list
40
40
 
41
41
  &__icon
42
42
  font-size: 24px
43
- margin-right: 16px
44
43
  flex: 0 0 1em
45
44
 
45
+ &--additional
46
+ margin-right: 16px
47
+
46
48
  &__avatar
47
49
  font-size: 32px
48
- margin-right: 8px
50
+
51
+ &--additional
52
+ margin-right: 8px
49
53
 
50
54
  &__spinner
51
55
  font-size: 32px
52
- margin-right: 8px
56
+
57
+ &--additional
58
+ margin-right: 8px
53
59
 
54
60
  &__message
55
61
  padding: 8px 0
@@ -40,16 +40,22 @@ body.q-ios-padding .q-notifications__list
40
40
 
41
41
  &__icon
42
42
  font-size: 24px
43
- margin-right: 16px
44
43
  flex: 0 0 1em
45
44
 
45
+ &--additional
46
+ margin-right: 16px
47
+
46
48
  &__avatar
47
49
  font-size: 32px
48
- margin-right: 8px
50
+
51
+ &--additional
52
+ margin-right: 8px
49
53
 
50
54
  &__spinner
51
55
  font-size: 32px
52
- margin-right: 8px
56
+
57
+ &--additional
58
+ margin-right: 8px
53
59
 
54
60
  &__message
55
61
  padding: 8px 0
@@ -1,6 +1,55 @@
1
- export default function (data) {
2
- const s = JSON.stringify(data)
3
- if (s) {
4
- return JSON.parse(s)
1
+ // adapted from https://stackoverflow.com/a/40294058
2
+
3
+ export default function cloneDeep (data, hash = new WeakMap()) {
4
+ if (Object(data) !== data) return data
5
+ if (hash.has(data)) return hash.get(data)
6
+
7
+ const result = data instanceof Date
8
+ ? new Date(data)
9
+ : (data instanceof RegExp
10
+ ? new RegExp(data.source, data.flags)
11
+ : (data instanceof Set
12
+ ? new Set()
13
+ : (data instanceof Map
14
+ ? new Map()
15
+ : (typeof data.constructor !== 'function'
16
+ ? Object.create(null)
17
+ : (data.prototype !== void 0 && typeof data.prototype.constructor === 'function'
18
+ ? data
19
+ : new data.constructor()
20
+ )
21
+ )
22
+ )
23
+ )
24
+ )
25
+
26
+ if (typeof data.constructor === 'function' && typeof data.valueOf === 'function') {
27
+ const val = data.valueOf()
28
+
29
+ if (Object(val) !== val) {
30
+ const result = new data.constructor(val)
31
+
32
+ hash.set(data, result)
33
+
34
+ return result
35
+ }
5
36
  }
37
+
38
+ hash.set(data, result)
39
+
40
+ if (data instanceof Set) {
41
+ data.forEach(val => {
42
+ result.add(cloneDeep(val, hash))
43
+ })
44
+ }
45
+ else if (data instanceof Map) {
46
+ data.forEach((val, key) => {
47
+ result.set(key, cloneDeep(val, hash))
48
+ })
49
+ }
50
+
51
+ return Object.assign(
52
+ result,
53
+ ...Object.keys(data).map(key => ({ [key]: cloneDeep(data[key], hash) }))
54
+ )
6
55
  }
package/src/utils/date.js CHANGED
@@ -3,7 +3,7 @@
3
3
  import { isDate } from './is.js'
4
4
  import { pad, capitalize } from './format.js'
5
5
  import { jalaaliMonthLength } from './date-persian.js'
6
- import lang from '../lang.js'
6
+ import lang, { defaultLang } from '../lang.js'
7
7
 
8
8
  const
9
9
  MILLISECONDS_IN_DAY = 86400000,
@@ -151,6 +151,128 @@ function getRegexData (mask, dateLocale) {
151
151
  return res
152
152
  }
153
153
 
154
+ function getDateLocale (paramDateLocale, langProps) {
155
+ return paramDateLocale !== void 0
156
+ ? paramDateLocale
157
+ : (
158
+ langProps !== void 0
159
+ ? langProps.date
160
+ : defaultLang.date
161
+ )
162
+ }
163
+
164
+ function formatTimezone (offset, delimeter = '') {
165
+ const
166
+ sign = offset > 0 ? '-' : '+',
167
+ absOffset = Math.abs(offset),
168
+ hours = Math.floor(absOffset / 60),
169
+ minutes = absOffset % 60
170
+
171
+ return sign + pad(hours) + delimeter + pad(minutes)
172
+ }
173
+
174
+ function applyYearMonthDayChange (date, mod, sign) {
175
+ let
176
+ year = date.getFullYear(),
177
+ month = date.getMonth(),
178
+ day = date.getDate()
179
+
180
+ if (mod.years !== void 0) {
181
+ year += sign * mod.years
182
+ }
183
+ else if (mod.year !== void 0) {
184
+ year += sign * mod.year
185
+ }
186
+
187
+ if (mod.months !== void 0) {
188
+ month += sign * mod.months
189
+ }
190
+ else if (mod.month !== void 0) {
191
+ month += sign * mod.month
192
+ }
193
+
194
+ if (mod.days !== void 0) {
195
+ day += sign * mod.days
196
+ }
197
+
198
+ date.setDate(1)
199
+ date.setMonth(2)
200
+
201
+ date.setFullYear(year)
202
+ date.setMonth(month)
203
+ date.setDate(day)
204
+
205
+ return date
206
+ }
207
+
208
+ const yearMonDay = [ 'years', 'year', 'months', 'month', 'days' ]
209
+
210
+ function getChange (date, mod, sign) {
211
+ const
212
+ d = new Date(date),
213
+ t = (
214
+ mod.years !== void 0 || mod.year !== void 0 ||
215
+ mod.months !== void 0 || mod.month !== void 0 ||
216
+ mod.days !== void 0
217
+ )
218
+ ? applyYearMonthDayChange(d, mod, sign)
219
+ : d
220
+
221
+ for (const key in mod) {
222
+ if (yearMonDay.includes(key) === false) {
223
+ const op = capitalize(key)
224
+ t[`set${op}`](t[`get${op}`]() + sign * mod[key])
225
+ }
226
+ }
227
+
228
+ return t
229
+ }
230
+
231
+ function applyYearMonthDay (date, mod, middle) {
232
+ const
233
+ year = mod.year !== void 0
234
+ ? mod.year
235
+ : (mod.years !== void 0 ? mod.years : date[`get${middle}FullYear`]()),
236
+ month = mod.month !== void 0
237
+ ? mod.month - 1
238
+ : (mod.months !== void 0 ? mod.months : date[`get${middle}Month`]()),
239
+ maxDay = (new Date(year, month + 1, 0)).getDate(),
240
+ day = Math.min(maxDay, mod.date !== void 0 ? mod.date : date[`get${middle}Date`]())
241
+
242
+ date[`set${middle}Date`](1)
243
+ date[`set${middle}Month`](2)
244
+
245
+ date[`set${middle}FullYear`](year)
246
+ date[`set${middle}Month`](month)
247
+ date[`set${middle}Date`](day)
248
+
249
+ return date
250
+ }
251
+
252
+ const yearMonDayAdj = [ 'years', 'year', 'months', 'month', 'days' ]
253
+
254
+ export function adjustDate (date, mod, utc) {
255
+ const
256
+ middle = utc === true ? 'UTC' : '',
257
+ d = new Date(date),
258
+ t = (
259
+ mod.years !== void 0 || mod.year !== void 0 ||
260
+ mod.months !== void 0 || mod.month !== void 0 ||
261
+ mod.days !== void 0
262
+ )
263
+ ? applyYearMonthDay(d, mod, middle)
264
+ : d
265
+
266
+ for (const key in mod) {
267
+ if (yearMonDayAdj.includes(key) === false) {
268
+ const op = key.charAt(0).toUpperCase() + key.slice(1)
269
+ t[`set${middle}${op}`](mod[key])
270
+ }
271
+ }
272
+
273
+ return t
274
+ }
275
+
154
276
  export function extractDate (str, mask, dateLocale) {
155
277
  const d = __splitDate(str, mask, dateLocale)
156
278
 
@@ -168,7 +290,7 @@ export function extractDate (str, mask, dateLocale) {
168
290
 
169
291
  return d.timezoneOffset === null || d.timezoneOffset === tzOffset
170
292
  ? date
171
- : getChange(date, { minutes: d.timezoneOffset - tzOffset }, true)
293
+ : getChange(date, { minutes: d.timezoneOffset - tzOffset }, 1)
172
294
  }
173
295
 
174
296
  export function __splitDate (str, mask, dateLocale, calendar, defaultModel) {
@@ -201,7 +323,7 @@ export function __splitDate (str, mask, dateLocale, calendar, defaultModel) {
201
323
  }
202
324
 
203
325
  const
204
- langOpts = dateLocale !== void 0 ? dateLocale : lang.props.date,
326
+ langOpts = getDateLocale(dateLocale, lang.props),
205
327
  months = langOpts.months,
206
328
  monthsShort = langOpts.monthsShort
207
329
 
@@ -303,49 +425,12 @@ export function __splitDate (str, mask, dateLocale, calendar, defaultModel) {
303
425
  }
304
426
  }
305
427
 
306
- date.dateHash = date.year + '/' + pad(date.month) + '/' + pad(date.day)
428
+ date.dateHash = pad(date.year, 6) + '/' + pad(date.month) + '/' + pad(date.day)
307
429
  date.timeHash = pad(date.hour) + ':' + pad(date.minute) + ':' + pad(date.second) + tzString
308
430
 
309
431
  return date
310
432
  }
311
433
 
312
- function formatTimezone (offset, delimeter = '') {
313
- const
314
- sign = offset > 0 ? '-' : '+',
315
- absOffset = Math.abs(offset),
316
- hours = Math.floor(absOffset / 60),
317
- minutes = absOffset % 60
318
-
319
- return sign + pad(hours) + delimeter + pad(minutes)
320
- }
321
-
322
- function setMonth (date, newMonth /* 1-based */) {
323
- const
324
- test = new Date(date.getFullYear(), newMonth, 0, 0, 0, 0, 0),
325
- days = test.getDate()
326
-
327
- date.setMonth(newMonth - 1, Math.min(days, date.getDate()))
328
- }
329
-
330
- function getChange (date, mod, add) {
331
- const
332
- t = new Date(date),
333
- sign = (add ? 1 : -1)
334
-
335
- Object.keys(mod).forEach(key => {
336
- if (key === 'month') {
337
- setMonth(t, t.getMonth() + 1 + sign * mod.month)
338
- return
339
- }
340
-
341
- const op = key === 'year'
342
- ? 'FullYear'
343
- : capitalize(key === 'days' ? 'date' : key)
344
- t[`set${op}`](t[`get${op}`]() + sign * mod[key])
345
- })
346
- return t
347
- }
348
-
349
434
  export function isValid (date) {
350
435
  return typeof date === 'number'
351
436
  ? true
@@ -403,30 +488,10 @@ export function isBetweenDates (date, from, to, opts = {}) {
403
488
  }
404
489
 
405
490
  export function addToDate (date, mod) {
406
- return getChange(date, mod, true)
491
+ return getChange(date, mod, 1)
407
492
  }
408
493
  export function subtractFromDate (date, mod) {
409
- return getChange(date, mod, false)
410
- }
411
-
412
- export function adjustDate (date, mod, utc) {
413
- const
414
- t = new Date(date),
415
- prefix = `set${utc === true ? 'UTC' : ''}`
416
-
417
- Object.keys(mod).forEach(key => {
418
- if (key === 'month') {
419
- setMonth(t, mod.month)
420
- return
421
- }
422
-
423
- const op = key === 'year'
424
- ? 'FullYear'
425
- : key.charAt(0).toUpperCase() + key.slice(1)
426
- t[`${prefix}${op}`](mod[key])
427
- })
428
-
429
- return t
494
+ return getChange(date, mod, -1)
430
495
  }
431
496
 
432
497
  export function startOfDate (date, unit, utc) {
@@ -843,15 +908,15 @@ export function formatDate (val, mask, dateLocale, __forcedYear, __forcedTimezon
843
908
  mask = defaultMask
844
909
  }
845
910
 
846
- const locale = dateLocale !== void 0
847
- ? dateLocale
848
- : lang.props.date
911
+ const locale = getDateLocale(dateLocale, lang.props)
849
912
 
850
913
  return mask.replace(
851
914
  token,
852
- (match, text) => match in formatter
853
- ? formatter[match](date, locale, __forcedYear, __forcedTimezoneOffset)
854
- : (text === void 0 ? match : text.split('\\]').join(']'))
915
+ (match, text) => (
916
+ match in formatter
917
+ ? formatter[match](date, locale, __forcedYear, __forcedTimezoneOffset)
918
+ : (text === void 0 ? match : text.split('\\]').join(']'))
919
+ )
855
920
  )
856
921
  }
857
922
 
package/src/utils/dom.js CHANGED
@@ -46,6 +46,30 @@ export function ready (fn) {
46
46
  document.addEventListener('DOMContentLoaded', fn, false)
47
47
  }
48
48
 
49
+ // internal
50
+ export function getElement (el) {
51
+ const type = typeof el
52
+
53
+ if (type === 'function') {
54
+ el = el()
55
+ }
56
+
57
+ if (type === 'string') {
58
+ try {
59
+ el = document.querySelector(el)
60
+ }
61
+ catch (err) {}
62
+ }
63
+
64
+ if (el !== Object(el)) {
65
+ return null
66
+ }
67
+
68
+ return el._isVue === true && el.$el !== void 0
69
+ ? el.$el
70
+ : el
71
+ }
72
+
49
73
  // internal
50
74
  export function childHasFocus (el, focusedEl) {
51
75
  if (el === void 0 || el.contains(focusedEl) === true) {
@@ -62,15 +86,10 @@ export function childHasFocus (el, focusedEl) {
62
86
  }
63
87
 
64
88
  // internal
65
- export function getBodyFullscreenElement (isFullscreen, activeEl) {
66
- return isFullscreen === true
67
- ? (
68
- // when a video tag enters fullscreen activeEl is null
69
- activeEl === document.documentElement || activeEl === null
70
- ? document.body
71
- : activeEl
72
- )
73
- : document.body
89
+ export function getBodyFullscreenElement (activeEl) {
90
+ return activeEl === document.documentElement || activeEl === null
91
+ ? document.body
92
+ : activeEl
74
93
  }
75
94
 
76
95
  export default {
@@ -25,7 +25,7 @@ function isPlainObject (obj) {
25
25
  let key
26
26
  for (key in obj) {}
27
27
 
28
- return key === undefined || hasOwn.call(obj, key)
28
+ return key === void 0 || hasOwn.call(obj, key)
29
29
  }
30
30
 
31
31
  export default function extend () {
@@ -72,7 +72,7 @@ export default function extend () {
72
72
 
73
73
  target[name] = extend(deep, clone, copy)
74
74
  }
75
- else if (copy !== undefined) {
75
+ else if (copy !== void 0) {
76
76
  target[name] = copy
77
77
  }
78
78
  }
@@ -1,15 +1,17 @@
1
1
  let queue = []
2
- const waitFlags = []
2
+ let waitFlags = []
3
+
4
+ function clearFlag (flag) {
5
+ waitFlags = waitFlags.filter(entry => entry !== flag)
6
+ }
3
7
 
4
8
  export function addFocusWaitFlag (flag) {
9
+ clearFlag(flag)
5
10
  waitFlags.push(flag)
6
11
  }
7
12
 
8
13
  export function removeFocusWaitFlag (flag) {
9
- const index = waitFlags.indexOf(flag)
10
- if (index !== -1) {
11
- waitFlags.splice(index, 1)
12
- }
14
+ clearFlag(flag)
13
15
 
14
16
  if (waitFlags.length === 0 && queue.length > 0) {
15
17
  // only call last focus handler (can't focus multiple things at once)
@@ -24,13 +26,9 @@ export function addFocusFn (fn) {
24
26
  }
25
27
  else {
26
28
  queue.push(fn)
27
- return fn
28
29
  }
29
30
  }
30
31
 
31
32
  export function removeFocusFn (fn) {
32
- const index = queue.indexOf(fn)
33
- if (index !== -1) {
34
- queue.splice(index, 1)
35
- }
33
+ queue = queue.filter(entry => entry !== fn)
36
34
  }
@@ -24,6 +24,23 @@ export function merge (target, source) {
24
24
  }
25
25
  }
26
26
 
27
+ let appRoot
28
+
29
+ function getDialogParent (parent, root) {
30
+ if (parent !== void 0) { return parent }
31
+ if (root !== void 0) { return root }
32
+
33
+ if (appRoot === void 0) {
34
+ const elRoot = document.getElementById('q-app')
35
+
36
+ if (elRoot && elRoot.__vue__) {
37
+ appRoot = elRoot.__vue__.$root
38
+ }
39
+ }
40
+
41
+ return appRoot
42
+ }
43
+
27
44
  export default function (DefaultComponent) {
28
45
  return ({ className, class: klass, style, component, root, parent, ...props }) => {
29
46
  if (isSSR === true) { return ssrAPI }
@@ -113,7 +130,7 @@ export default function (DefaultComponent) {
113
130
  name: 'QGlobalDialog',
114
131
 
115
132
  el: node,
116
- parent: parent === void 0 ? root : parent,
133
+ parent: getDialogParent(parent, root),
117
134
 
118
135
  render (h) {
119
136
  return h(DialogComponent, {
package/src/utils/is.js CHANGED
@@ -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