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
@@ -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
@@ -10,7 +10,7 @@
10
10
  "definition": {
11
11
  "...props": {
12
12
  "type": "Object",
13
- "desc": "QAjaxBar component props",
13
+ "desc": "QAjaxBar component props, EXCEPT for 'hijack-filter'",
14
14
  "__exemption": [ "examples" ]
15
15
  }
16
16
  }