quasar 1.16.3 → 1.17.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 (296) hide show
  1. package/dist/api/BottomSheet.json +2 -2
  2. package/dist/api/Loading.json +0 -2
  3. package/dist/api/Notify.json +15 -15
  4. package/dist/api/QAvatar.json +1 -1
  5. package/dist/api/QBreadcrumbsEl.json +32 -11
  6. package/dist/api/QBtn.json +35 -14
  7. package/dist/api/QBtnDropdown.json +36 -15
  8. package/dist/api/QBtnToggle.json +1 -1
  9. package/dist/api/QCarousel.json +7 -7
  10. package/dist/api/QCarouselSlide.json +2 -2
  11. package/dist/api/QChatMessage.json +1 -5
  12. package/dist/api/QChip.json +4 -4
  13. package/dist/api/QColor.json +6 -0
  14. package/dist/api/QDialog.json +7 -1
  15. package/dist/api/QExpansionItem.json +34 -13
  16. package/dist/api/QFab.json +34 -2
  17. package/dist/api/QFabAction.json +9 -1
  18. package/dist/api/QField.json +80 -6
  19. package/dist/api/QFile.json +80 -6
  20. package/dist/api/QImg.json +2 -2
  21. package/dist/api/QInnerLoading.json +32 -0
  22. package/dist/api/QInput.json +82 -6
  23. package/dist/api/QItem.json +31 -10
  24. package/dist/api/QOptionGroup.json +58 -1
  25. package/dist/api/QPagination.json +4 -4
  26. package/dist/api/QParallax.json +1 -1
  27. package/dist/api/QPopupEdit.json +14 -7
  28. package/dist/api/QPullToRefresh.json +1 -1
  29. package/dist/api/QRange.json +581 -96
  30. package/dist/api/QRating.json +3 -3
  31. package/dist/api/QRouteTab.json +32 -12
  32. package/dist/api/QScrollArea.json +188 -20
  33. package/dist/api/QSelect.json +81 -9
  34. package/dist/api/QSeparator.json +1 -1
  35. package/dist/api/QSlider.json +499 -34
  36. package/dist/api/QStep.json +4 -4
  37. package/dist/api/QStepper.json +4 -4
  38. package/dist/api/QTab.json +1 -1
  39. package/dist/api/QTable.json +4 -4
  40. package/dist/api/QTabs.json +9 -0
  41. package/dist/api/QTimelineEntry.json +2 -2
  42. package/dist/api/QToggle.json +1 -1
  43. package/dist/api/QTree.json +7 -1
  44. package/dist/api/QVideo.json +10 -0
  45. package/dist/icon-set/bootstrap-icons.umd.min.js +1 -1
  46. package/dist/icon-set/eva-icons.umd.min.js +1 -1
  47. package/dist/icon-set/fontawesome-v5-pro.umd.min.js +1 -1
  48. package/dist/icon-set/fontawesome-v5.umd.min.js +1 -1
  49. package/dist/icon-set/ionicons-v4.umd.min.js +1 -1
  50. package/dist/icon-set/line-awesome.umd.min.js +1 -1
  51. package/dist/icon-set/material-icons-outlined.umd.min.js +1 -1
  52. package/dist/icon-set/material-icons-round.umd.min.js +1 -1
  53. package/dist/icon-set/material-icons-sharp.umd.min.js +1 -1
  54. package/dist/icon-set/material-icons.umd.min.js +1 -1
  55. package/dist/icon-set/mdi-v3.umd.min.js +1 -1
  56. package/dist/icon-set/mdi-v4.umd.min.js +1 -1
  57. package/dist/icon-set/mdi-v5.umd.min.js +1 -1
  58. package/dist/icon-set/mdi-v6.umd.min.js +1 -1
  59. package/dist/icon-set/svg-bootstrap-icons.umd.min.js +1 -1
  60. package/dist/icon-set/svg-eva-icons.umd.min.js +1 -1
  61. package/dist/icon-set/svg-fontawesome-v5.umd.min.js +1 -1
  62. package/dist/icon-set/svg-ionicons-v4.umd.min.js +1 -1
  63. package/dist/icon-set/svg-ionicons-v5.umd.min.js +1 -1
  64. package/dist/icon-set/svg-ionicons-v6.umd.min.js +6 -0
  65. package/dist/icon-set/svg-line-awesome.umd.min.js +1 -1
  66. package/dist/icon-set/svg-material-icons-outlined.umd.min.js +1 -1
  67. package/dist/icon-set/svg-material-icons-round.umd.min.js +1 -1
  68. package/dist/icon-set/svg-material-icons-sharp.umd.min.js +1 -1
  69. package/dist/icon-set/svg-material-icons.umd.min.js +1 -1
  70. package/dist/icon-set/svg-mdi-v4.umd.min.js +1 -1
  71. package/dist/icon-set/svg-mdi-v5.umd.min.js +1 -1
  72. package/dist/icon-set/svg-mdi-v6.umd.min.js +1 -1
  73. package/dist/icon-set/svg-themify.umd.min.js +1 -1
  74. package/dist/icon-set/themify.umd.min.js +1 -1
  75. package/dist/lang/ar.umd.min.js +2 -2
  76. package/dist/lang/az-latn.umd.min.js +1 -1
  77. package/dist/lang/bg.umd.min.js +1 -1
  78. package/dist/lang/ca.umd.min.js +1 -1
  79. package/dist/lang/cs.umd.min.js +1 -1
  80. package/dist/lang/da.umd.min.js +1 -1
  81. package/dist/lang/de.umd.min.js +1 -1
  82. package/dist/lang/el.umd.min.js +1 -1
  83. package/dist/lang/en-gb.umd.min.js +1 -1
  84. package/dist/lang/en-us.umd.min.js +1 -1
  85. package/dist/lang/eo.umd.min.js +1 -1
  86. package/dist/lang/es.umd.min.js +1 -1
  87. package/dist/lang/et.umd.min.js +1 -1
  88. package/dist/lang/fa-ir.umd.min.js +1 -1
  89. package/dist/lang/fa.umd.min.js +1 -1
  90. package/dist/lang/fi.umd.min.js +1 -1
  91. package/dist/lang/fr.umd.min.js +2 -2
  92. package/dist/lang/gn.umd.min.js +1 -1
  93. package/dist/lang/he.umd.min.js +1 -1
  94. package/dist/lang/hr.umd.min.js +1 -1
  95. package/dist/lang/hu.umd.min.js +1 -1
  96. package/dist/lang/id.umd.min.js +1 -1
  97. package/dist/lang/is.umd.min.js +1 -1
  98. package/dist/lang/it.umd.min.js +1 -1
  99. package/dist/lang/ja.umd.min.js +1 -1
  100. package/dist/lang/km.umd.min.js +1 -1
  101. package/dist/lang/ko-kr.umd.min.js +1 -1
  102. package/dist/lang/kur-ckb.umd.min.js +1 -1
  103. package/dist/lang/lu.umd.min.js +1 -1
  104. package/dist/lang/lv.umd.min.js +1 -1
  105. package/dist/lang/ml.umd.min.js +1 -1
  106. package/dist/lang/ms.umd.min.js +1 -1
  107. package/dist/lang/nb-no.umd.min.js +1 -1
  108. package/dist/lang/nl.umd.min.js +1 -1
  109. package/dist/lang/pl.umd.min.js +1 -1
  110. package/dist/lang/pt-br.umd.min.js +1 -1
  111. package/dist/lang/pt.umd.min.js +1 -1
  112. package/dist/lang/ro.umd.min.js +1 -1
  113. package/dist/lang/ru.umd.min.js +1 -1
  114. package/dist/lang/sk.umd.min.js +1 -1
  115. package/dist/lang/sl.umd.min.js +1 -1
  116. package/dist/lang/sr.umd.min.js +2 -2
  117. package/dist/lang/sv.umd.min.js +1 -1
  118. package/dist/lang/ta.umd.min.js +1 -1
  119. package/dist/lang/th.umd.min.js +1 -1
  120. package/dist/lang/tr.umd.min.js +1 -1
  121. package/dist/lang/ug.umd.min.js +2 -2
  122. package/dist/lang/uk.umd.min.js +1 -1
  123. package/dist/lang/vi.umd.min.js +1 -1
  124. package/dist/lang/zh-hans.umd.min.js +2 -2
  125. package/dist/lang/zh-hant.umd.min.js +2 -2
  126. package/dist/quasar.addon.css +1 -1
  127. package/dist/quasar.addon.rtl.css +1 -1
  128. package/dist/quasar.common.js +2 -2
  129. package/dist/quasar.css +376 -225
  130. package/dist/quasar.esm.js +2 -2
  131. package/dist/quasar.ie.polyfills.js +1 -1
  132. package/dist/quasar.ie.polyfills.umd.min.js +1 -1
  133. package/dist/quasar.min.css +1 -1
  134. package/dist/quasar.rtl.css +508 -301
  135. package/dist/quasar.rtl.min.css +1 -1
  136. package/dist/quasar.sass +324 -208
  137. package/dist/quasar.styl +324 -208
  138. package/dist/quasar.umd.js +3098 -1836
  139. package/dist/quasar.umd.min.js +2 -2
  140. package/dist/quasar.umd.modern.js +3057 -1817
  141. package/dist/quasar.umd.modern.min.js +2 -2
  142. package/dist/transform-asset-urls.json +20 -0
  143. package/dist/types/index.d.ts +421 -103
  144. package/dist/types/utils/scroll.d.ts +1 -0
  145. package/dist/vetur/quasar-attributes.json +313 -89
  146. package/dist/vetur/quasar-tags.json +74 -18
  147. package/dist/web-types/web-types.json +1289 -259
  148. package/icon-set/svg-ionicons-v6.js +225 -0
  149. package/lang/ar.js +1 -1
  150. package/lang/fa-ir.js +3 -1
  151. package/lang/fa.js +3 -1
  152. package/lang/fr.js +1 -1
  153. package/lang/index.json +1 -1
  154. package/lang/kur-ckb.js +2 -2
  155. package/lang/sr.js +4 -4
  156. package/lang/ug.js +48 -46
  157. package/lang/zh-hans.js +1 -1
  158. package/lang/zh-hant.js +18 -18
  159. package/package.json +1 -1
  160. package/src/api.extends.json +1 -2
  161. package/src/components/breadcrumbs/QBreadcrumbs.js +15 -11
  162. package/src/components/breadcrumbs/QBreadcrumbs.sass +0 -3
  163. package/src/components/breadcrumbs/QBreadcrumbs.styl +0 -3
  164. package/src/components/breadcrumbs/QBreadcrumbsEl.js +25 -9
  165. package/src/components/btn/QBtn.js +3 -3
  166. package/src/components/btn-dropdown/QBtnDropdown.sass +2 -0
  167. package/src/components/btn-dropdown/QBtnDropdown.styl +2 -0
  168. package/src/components/carousel/QCarousel.js +6 -2
  169. package/src/components/carousel/QCarousel.json +9 -1
  170. package/src/components/carousel/QCarouselSlide.json +2 -2
  171. package/src/components/chat/QChatMessage.json +1 -1
  172. package/src/components/color/QColor.js +100 -85
  173. package/src/components/color/QColor.json +7 -0
  174. package/src/components/color/QColor.sass +14 -24
  175. package/src/components/color/QColor.styl +14 -24
  176. package/src/components/date/QDate.js +7 -1
  177. package/src/components/date/QDate.sass +2 -0
  178. package/src/components/date/QDate.styl +2 -0
  179. package/src/components/dialog/QDialog.js +8 -4
  180. package/src/components/dialog/QDialog.json +8 -1
  181. package/src/components/drawer/QDrawer.js +16 -15
  182. package/src/components/editor/QEditor.js +2 -2
  183. package/src/components/editor/QEditor.sass +13 -1
  184. package/src/components/editor/QEditor.styl +13 -1
  185. package/src/components/expansion-item/QExpansionItem.js +13 -11
  186. package/src/components/fab/QFab.js +20 -11
  187. package/src/components/fab/QFab.json +35 -0
  188. package/src/components/fab/QFabAction.js +16 -9
  189. package/src/components/fab/QFabAction.json +10 -0
  190. package/src/components/field/QField.js +28 -23
  191. package/src/components/field/__QField.json +72 -8
  192. package/src/components/file/QFile.js +12 -4
  193. package/src/components/file/QFile.sass +4 -3
  194. package/src/components/file/QFile.styl +4 -3
  195. package/src/components/footer/QFooter.js +1 -1
  196. package/src/components/form/QForm.js +1 -1
  197. package/src/components/header/QHeader.js +1 -1
  198. package/src/components/icon/QIcon.js +54 -49
  199. package/src/components/img/QImg.json +2 -2
  200. package/src/components/infinite-scroll/QInfiniteScroll.js +49 -36
  201. package/src/components/inner-loading/QInnerLoading.js +54 -22
  202. package/src/components/inner-loading/QInnerLoading.json +29 -0
  203. package/src/components/inner-loading/QInnerLoading.sass +3 -0
  204. package/src/components/inner-loading/QInnerLoading.styl +3 -0
  205. package/src/components/item/QItem.js +9 -15
  206. package/src/components/linear-progress/QLinearProgress.js +6 -2
  207. package/src/components/menu/QMenu.js +5 -1
  208. package/src/components/option-group/QOptionGroup.js +32 -22
  209. package/src/components/option-group/QOptionGroup.json +50 -1
  210. package/src/components/parallax/QParallax.js +3 -0
  211. package/src/components/parallax/QParallax.json +1 -1
  212. package/src/components/popup-edit/QPopupEdit.js +41 -16
  213. package/src/components/popup-edit/QPopupEdit.json +15 -8
  214. package/src/components/range/QRange.js +223 -278
  215. package/src/components/range/QRange.json +11 -122
  216. package/src/components/rating/QRating.js +56 -38
  217. package/src/components/rating/QRating.json +3 -3
  218. package/src/components/rating/QRating.sass +8 -6
  219. package/src/components/rating/QRating.styl +8 -6
  220. package/src/components/resize-observer/QResizeObserver.js +15 -10
  221. package/src/components/scroll-area/QScrollArea.js +342 -126
  222. package/src/components/scroll-area/QScrollArea.json +164 -20
  223. package/src/components/scroll-area/QScrollArea.sass +4 -0
  224. package/src/components/scroll-area/QScrollArea.styl +4 -0
  225. package/src/components/scroll-observer/QScrollObserver.js +9 -2
  226. package/src/components/select/QSelect.js +8 -2
  227. package/src/components/separator/QSeparator.js +0 -1
  228. package/src/components/separator/QSeparator.json +1 -1
  229. package/src/components/slider/QSlider.js +97 -140
  230. package/src/components/slider/QSlider.json +1 -122
  231. package/src/components/slider/QSlider.sass +205 -139
  232. package/src/components/slider/QSlider.styl +205 -139
  233. package/src/components/slider/slider-utils.js +468 -123
  234. package/src/components/slider/slider-utils.json +546 -0
  235. package/src/components/stepper/QStepper.js +1 -1
  236. package/src/components/stepper/QStepper.sass +25 -26
  237. package/src/components/stepper/QStepper.styl +25 -26
  238. package/src/components/table/QTable.sass +3 -0
  239. package/src/components/table/QTable.styl +3 -0
  240. package/src/components/tabs/QRouteTab.js +13 -13
  241. package/src/components/tabs/QRouteTab.json +0 -7
  242. package/src/components/tabs/QTab.js +71 -20
  243. package/src/components/tabs/QTabs.js +237 -52
  244. package/src/components/tabs/QTabs.json +8 -0
  245. package/src/components/tabs/QTabs.sass +6 -6
  246. package/src/components/tabs/QTabs.styl +6 -6
  247. package/src/components/time/QTime.js +6 -2
  248. package/src/components/timeline/QTimelineEntry.json +1 -1
  249. package/src/components/tree/QTree.js +10 -6
  250. package/src/components/tree/QTree.json +5 -0
  251. package/src/components/tree/QTree.sass +58 -4
  252. package/src/components/tree/QTree.styl +58 -4
  253. package/src/components/uploader/QUploaderBase.js +15 -19
  254. package/src/components/video/QVideo.js +4 -1
  255. package/src/components/video/QVideo.json +11 -0
  256. package/src/components/virtual-scroll/QVirtualScroll.sass +1 -0
  257. package/src/components/virtual-scroll/QVirtualScroll.styl +1 -0
  258. package/src/css/core/helpers.sass +3 -0
  259. package/src/css/core/helpers.styl +3 -0
  260. package/src/css/core/positioning.sass +5 -0
  261. package/src/css/core/positioning.styl +5 -0
  262. package/src/css/variables.sass +4 -6
  263. package/src/css/variables.styl +4 -6
  264. package/src/directives/Scroll.js +2 -2
  265. package/src/directives/ScrollFire.js +1 -0
  266. package/src/ie-compat/ie.js +13 -13
  267. package/src/install.js +1 -1
  268. package/src/lang.js +7 -4
  269. package/src/mixins/anchor.js +3 -13
  270. package/src/mixins/btn.js +30 -38
  271. package/src/mixins/btn.json +26 -11
  272. package/src/mixins/file.js +27 -5
  273. package/src/mixins/fullscreen.js +16 -4
  274. package/src/mixins/portal.js +10 -10
  275. package/src/mixins/router-link.js +88 -14
  276. package/src/mixins/router-link.json +26 -10
  277. package/src/mixins/validate.js +33 -15
  278. package/src/mixins/virtual-scroll.js +40 -42
  279. package/src/plugins/AppFullscreen.js +41 -16
  280. package/src/plugins/BottomSheet.json +1 -1
  281. package/src/plugins/Cookies.js +1 -1
  282. package/src/plugins/Loading.js +8 -0
  283. package/src/plugins/LoadingBar.js +9 -0
  284. package/src/plugins/Notify.js +351 -333
  285. package/src/plugins/Notify.json +10 -10
  286. package/src/plugins/Notify.sass +9 -3
  287. package/src/plugins/Notify.styl +9 -3
  288. package/src/utils/clone.js +53 -4
  289. package/src/utils/date.js +134 -69
  290. package/src/utils/dom.js +28 -9
  291. package/src/utils/extend.js +2 -2
  292. package/src/utils/focus-manager.js +8 -10
  293. package/src/utils/global-dialog.js +18 -1
  294. package/src/utils/is.js +2 -2
  295. package/src/utils/morph.js +2 -12
  296. package/src/utils/scroll.js +71 -35
@@ -1,4 +1,5 @@
1
1
  import debounce from '../utils/debounce.js'
2
+ import { rtlHasScrollBug } from '../utils/scroll.js'
2
3
 
3
4
  const aggBucketSize = 1000
4
5
 
@@ -11,31 +12,7 @@ const scrollToEdges = [
11
12
  'end-force'
12
13
  ]
13
14
 
14
- const slice = Array.prototype.slice
15
-
16
- let buggyRTL = void 0
17
-
18
- // mobile Chrome takes the crown for this
19
- function detectBuggyRTL () {
20
- const scroller = document.createElement('div')
21
- const spacer = document.createElement('div')
22
-
23
- scroller.setAttribute('dir', 'rtl')
24
- scroller.style.width = '1px'
25
- scroller.style.height = '1px'
26
- scroller.style.overflow = 'auto'
27
-
28
- spacer.style.width = '1000px'
29
- spacer.style.height = '1px'
30
-
31
- document.body.appendChild(scroller)
32
- scroller.appendChild(spacer)
33
- scroller.scrollLeft = -1000
34
-
35
- buggyRTL = scroller.scrollLeft >= 0
36
-
37
- scroller.remove()
38
- }
15
+ const filterProto = Array.prototype.filter
39
16
 
40
17
  function sumFn (acc, h) {
41
18
  return acc + h
@@ -65,7 +42,7 @@ function getScrollDetails (
65
42
  if (horizontal === true) {
66
43
  if (parent === window) {
67
44
  details.scrollStart = window.pageXOffset || window.scrollX || document.body.scrollLeft || 0
68
- details.scrollViewSize += window.innerWidth
45
+ details.scrollViewSize += document.documentElement.clientWidth
69
46
  }
70
47
  else {
71
48
  details.scrollStart = parentCalc.scrollLeft
@@ -74,13 +51,13 @@ function getScrollDetails (
74
51
  details.scrollMaxSize = parentCalc.scrollWidth
75
52
 
76
53
  if (rtl === true) {
77
- details.scrollStart = (buggyRTL === true ? details.scrollMaxSize - details.scrollViewSize : 0) - details.scrollStart
54
+ details.scrollStart = (rtlHasScrollBug() === true ? details.scrollMaxSize - details.scrollViewSize : 0) - details.scrollStart
78
55
  }
79
56
  }
80
57
  else {
81
58
  if (parent === window) {
82
59
  details.scrollStart = window.pageYOffset || window.scrollY || document.body.scrollTop || 0
83
- details.scrollViewSize += window.innerHeight
60
+ details.scrollViewSize += document.documentElement.clientHeight
84
61
  }
85
62
  else {
86
63
  details.scrollStart = parentCalc.scrollTop
@@ -128,10 +105,14 @@ function getScrollDetails (
128
105
  }
129
106
 
130
107
  function setScroll (parent, scroll, horizontal, rtl) {
108
+ if (scroll === 'end') {
109
+ scroll = (parent === window ? document.body : parent)[horizontal === true ? 'scrollWidth' : 'scrollHeight']
110
+ }
111
+
131
112
  if (parent === window) {
132
113
  if (horizontal === true) {
133
114
  if (rtl === true) {
134
- scroll = (buggyRTL === true ? document.body.scrollWidth - window.innerWidth : 0) - scroll
115
+ scroll = (rtlHasScrollBug() === true ? document.body.scrollWidth - document.documentElement.clientWidth : 0) - scroll
135
116
  }
136
117
  window.scrollTo(scroll, window.pageYOffset || window.scrollY || document.body.scrollTop || 0)
137
118
  }
@@ -141,7 +122,7 @@ function setScroll (parent, scroll, horizontal, rtl) {
141
122
  }
142
123
  else if (horizontal === true) {
143
124
  if (rtl === true) {
144
- scroll = (buggyRTL === true ? parent.scrollWidth - parent.offsetWidth : 0) - scroll
125
+ scroll = (rtlHasScrollBug() === true ? parent.scrollWidth - parent.offsetWidth : 0) - scroll
145
126
  }
146
127
  parent.scrollLeft = scroll
147
128
  }
@@ -428,20 +409,17 @@ export default {
428
409
  }
429
410
 
430
411
  const { activeElement } = document
412
+ const contentEl = this.$refs.content
431
413
  if (
432
414
  rangeChanged === true &&
433
- this.$refs.content !== void 0 &&
434
- this.$refs.content !== activeElement &&
435
- this.$refs.content.contains(activeElement) === true
415
+ contentEl !== void 0 &&
416
+ contentEl !== activeElement &&
417
+ contentEl.contains(activeElement) === true
436
418
  ) {
437
- const onBlurFn = () => {
438
- this.$refs.content.focus()
439
- }
440
-
441
- activeElement.addEventListener('blur', onBlurFn, true)
419
+ contentEl.addEventListener('focusout', this.__onBlurRefocusFn)
442
420
 
443
- requestAnimationFrame(() => {
444
- activeElement.removeEventListener('blur', onBlurFn, true)
421
+ setTimeout(() => {
422
+ contentEl !== void 0 && contentEl.removeEventListener('focusout', this.__onBlurRefocusFn)
445
423
  })
446
424
  }
447
425
 
@@ -518,7 +496,7 @@ export default {
518
496
 
519
497
  if (contentEl !== void 0) {
520
498
  const
521
- children = slice.call(contentEl.children).filter(el => el.classList.contains('q-virtual-scroll--skip') === false),
499
+ children = filterProto.call(contentEl.children || [], el => el.classList && el.classList.contains('q-virtual-scroll--skip') === false), // fallback [] for IE
522
500
  childrenLength = children.length,
523
501
  sizeFn = this.virtualScrollHorizontal === true
524
502
  ? el => el.getBoundingClientRect().width
@@ -700,6 +678,10 @@ export default {
700
678
 
701
679
  this.prevToIndex = index
702
680
  }
681
+ },
682
+
683
+ __onBlurRefocusFn () {
684
+ this.$refs.content !== void 0 && this.$refs.content.focus()
703
685
  }
704
686
  },
705
687
 
@@ -707,13 +689,29 @@ export default {
707
689
  this.__setVirtualScrollSize()
708
690
  },
709
691
 
692
+ activated () {
693
+ const scrollEl = this.__getVirtualScrollTarget()
694
+
695
+ if (this.prevScrollStart !== void 0 && scrollEl !== void 0 && scrollEl !== null && scrollEl.nodeType !== 8) {
696
+ setScroll(
697
+ scrollEl,
698
+ this.prevScrollStart,
699
+ this.virtualScrollHorizontal,
700
+ this.$q.lang.rtl
701
+ )
702
+ }
703
+ else {
704
+ this.scrollTo(this.prevToIndex)
705
+ }
706
+ },
707
+
710
708
  beforeMount () {
711
- buggyRTL === void 0 && detectBuggyRTL()
712
709
  this.__onVirtualScrollEvt = debounce(this.__onVirtualScrollEvt, this.$q.platform.is.ios === true ? 120 : 35)
713
710
  this.__setVirtualScrollSize()
714
711
  },
715
712
 
716
713
  beforeDestroy () {
714
+ this.__onVirtualScrollEvt.cancel()
717
715
  const styleSheet = document.getElementById(this.id + '_ss')
718
716
  styleSheet !== null && styleSheet.remove()
719
717
  }
@@ -1,6 +1,6 @@
1
1
  import Vue from 'vue'
2
2
 
3
- import { isSSR } from './Platform.js'
3
+ import { isSSR, client } from './Platform.js'
4
4
 
5
5
  const prefixes = {}
6
6
 
@@ -18,17 +18,42 @@ function promisify (target, fn) {
18
18
  }
19
19
  }
20
20
 
21
+ function checkActive (plugin) {
22
+ plugin.activeEl = document.fullscreenElement ||
23
+ document.mozFullScreenElement ||
24
+ document.webkitFullscreenElement ||
25
+ document.msFullscreenElement ||
26
+ null
27
+
28
+ plugin.isActive = plugin.activeEl !== null
29
+ }
30
+
21
31
  export default {
22
32
  isCapable: false,
23
33
  isActive: false,
24
34
  activeEl: null,
25
35
 
26
36
  request (target) {
27
- if (this.isCapable === true && this.isActive === false) {
37
+ if (this.isCapable === true) {
28
38
  const el = target || document.documentElement
29
- return promisify(el, prefixes.request).then(() => {
30
- this.activeEl = el
31
- })
39
+
40
+ if (el !== this.activeEl) {
41
+ const q = client.is.ie === true && this.activeEl !== null && el.contains(this.activeEl)
42
+ ? this.exit()
43
+ : Promise.resolve()
44
+
45
+ return q
46
+ .then(() => promisify(el, prefixes.request))
47
+ .catch(error => (
48
+ this.activeEl !== null
49
+ ? this.exit().then(() => promisify(el, prefixes.request))
50
+ : Promise.reject(error)
51
+ ))
52
+ .then(res => {
53
+ checkActive(this)
54
+ return res
55
+ })
56
+ }
32
57
  }
33
58
 
34
59
  return this.__getErr()
@@ -36,21 +61,26 @@ export default {
36
61
 
37
62
  exit () {
38
63
  return this.isCapable === true && this.isActive === true
39
- ? promisify(document, prefixes.exit).then(() => {
40
- this.activeEl = null
64
+ ? promisify(document, prefixes.exit).then(res => {
65
+ checkActive(this)
66
+ return this.isActive ? this.exit() : res
41
67
  })
42
68
  : this.__getErr()
43
69
  },
44
70
 
45
71
  toggle (target) {
46
- return this.isActive === true
72
+ const el = target || document.documentElement
73
+
74
+ return this.activeEl === el
47
75
  ? this.exit()
48
- : this.request(target)
76
+ : this.request(el)
49
77
  },
50
78
 
51
79
  install ({ $q }) {
52
80
  $q.fullscreen = this
53
81
 
82
+ this.__getErr = () => Promise.resolve()
83
+
54
84
  if (isSSR === true) { return }
55
85
 
56
86
  prefixes.request = [
@@ -66,24 +96,19 @@ export default {
66
96
  return
67
97
  }
68
98
 
69
- this.__getErr = () => Promise.resolve()
70
-
71
99
  prefixes.exit = [
72
100
  'exitFullscreen',
73
101
  'msExitFullscreen', 'mozCancelFullScreen', 'webkitExitFullscreen'
74
102
  ].find(exit => document[exit])
75
103
 
76
- this.isActive = !!(document.fullscreenElement ||
77
- document.mozFullScreenElement ||
78
- document.webkitFullscreenElement ||
79
- document.msFullscreenElement)
104
+ checkActive(this)
80
105
 
81
106
  ;[
82
107
  'onfullscreenchange',
83
108
  'onmsfullscreenchange', 'onwebkitfullscreenchange'
84
109
  ].forEach(evt => {
85
110
  document[evt] = () => {
86
- this.isActive = this.isActive === false
111
+ checkActive(this)
87
112
  }
88
113
  })
89
114
 
@@ -45,7 +45,7 @@
45
45
  "type": "String",
46
46
  "desc": "Path to an image for this action",
47
47
  "examples": [
48
- "(statics folder) statics/img/something.png",
48
+ "(public folder) img/something.png",
49
49
  "(relative path format) :src=\"require('./my_img.jpg')\"",
50
50
  "(URL) https://some-site.net/some-img.gif"
51
51
  ]
@@ -111,7 +111,7 @@ function set (key, val, opts = {}, ssr) {
111
111
 
112
112
  if (expire !== void 0 && expireValue < 0) {
113
113
  const val = get(key, ssr)
114
- if (val !== undefined) {
114
+ if (val !== void 0) {
115
115
  all = all
116
116
  .replace(`${key}=${val}; `, '')
117
117
  .replace(`; ${key}=${val}`, '')
@@ -55,6 +55,14 @@ const Loading = {
55
55
  vm = new Vue({
56
56
  name: 'QLoading',
57
57
 
58
+ // hide App from Vue devtools
59
+ devtools: { hide: true },
60
+
61
+ beforeCreate () {
62
+ // prevent error in Vue devtools
63
+ this._routerRoot === void 0 && (this._routerRoot = {})
64
+ },
65
+
58
66
  el: node,
59
67
 
60
68
  mounted () {
@@ -23,6 +23,15 @@ export default {
23
23
 
24
24
  const bar = $q.loadingBar = new Vue({
25
25
  name: 'LoadingBar',
26
+
27
+ // hide App from Vue devtools
28
+ devtools: { hide: true },
29
+
30
+ beforeCreate () {
31
+ // prevent error in Vue devtools
32
+ this._routerRoot === void 0 && (this._routerRoot = {})
33
+ },
34
+
26
35
  render: h => h(QAjaxBar, {
27
36
  ref: 'bar',
28
37
  props