quasar 1.22.4 → 1.22.5

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 (123) hide show
  1. package/dist/icon-set/bootstrap-icons.umd.min.js +1 -1
  2. package/dist/icon-set/eva-icons.umd.min.js +1 -1
  3. package/dist/icon-set/fontawesome-v5-pro.umd.min.js +1 -1
  4. package/dist/icon-set/fontawesome-v5.umd.min.js +1 -1
  5. package/dist/icon-set/fontawesome-v6-pro.umd.min.js +1 -1
  6. package/dist/icon-set/fontawesome-v6.umd.min.js +1 -1
  7. package/dist/icon-set/ionicons-v4.umd.min.js +1 -1
  8. package/dist/icon-set/line-awesome.umd.min.js +1 -1
  9. package/dist/icon-set/material-icons-outlined.umd.min.js +1 -1
  10. package/dist/icon-set/material-icons-round.umd.min.js +1 -1
  11. package/dist/icon-set/material-icons-sharp.umd.min.js +1 -1
  12. package/dist/icon-set/material-icons.umd.min.js +1 -1
  13. package/dist/icon-set/material-symbols-outlined.umd.min.js +1 -1
  14. package/dist/icon-set/material-symbols-rounded.umd.min.js +1 -1
  15. package/dist/icon-set/material-symbols-sharp.umd.min.js +1 -1
  16. package/dist/icon-set/mdi-v3.umd.min.js +1 -1
  17. package/dist/icon-set/mdi-v4.umd.min.js +1 -1
  18. package/dist/icon-set/mdi-v5.umd.min.js +1 -1
  19. package/dist/icon-set/mdi-v6.umd.min.js +1 -1
  20. package/dist/icon-set/mdi-v7.umd.min.js +1 -1
  21. package/dist/icon-set/svg-bootstrap-icons.umd.min.js +1 -1
  22. package/dist/icon-set/svg-eva-icons.umd.min.js +1 -1
  23. package/dist/icon-set/svg-fontawesome-v5.umd.min.js +1 -1
  24. package/dist/icon-set/svg-fontawesome-v6.umd.min.js +1 -1
  25. package/dist/icon-set/svg-ionicons-v4.umd.min.js +1 -1
  26. package/dist/icon-set/svg-ionicons-v5.umd.min.js +1 -1
  27. package/dist/icon-set/svg-ionicons-v6.umd.min.js +1 -1
  28. package/dist/icon-set/svg-line-awesome.umd.min.js +1 -1
  29. package/dist/icon-set/svg-material-icons-outlined.umd.min.js +1 -1
  30. package/dist/icon-set/svg-material-icons-round.umd.min.js +1 -1
  31. package/dist/icon-set/svg-material-icons-sharp.umd.min.js +1 -1
  32. package/dist/icon-set/svg-material-icons.umd.min.js +1 -1
  33. package/dist/icon-set/svg-material-symbols-outlined.umd.min.js +1 -1
  34. package/dist/icon-set/svg-material-symbols-rounded.umd.min.js +1 -1
  35. package/dist/icon-set/svg-material-symbols-sharp.umd.min.js +1 -1
  36. package/dist/icon-set/svg-mdi-v4.umd.min.js +1 -1
  37. package/dist/icon-set/svg-mdi-v5.umd.min.js +1 -1
  38. package/dist/icon-set/svg-mdi-v6.umd.min.js +1 -1
  39. package/dist/icon-set/svg-mdi-v7.umd.min.js +1 -1
  40. package/dist/icon-set/svg-themify.umd.min.js +1 -1
  41. package/dist/icon-set/themify.umd.min.js +1 -1
  42. package/dist/lang/ar.umd.min.js +1 -1
  43. package/dist/lang/az-latn.umd.min.js +1 -1
  44. package/dist/lang/bg.umd.min.js +1 -1
  45. package/dist/lang/ca.umd.min.js +1 -1
  46. package/dist/lang/cs.umd.min.js +1 -1
  47. package/dist/lang/da.umd.min.js +1 -1
  48. package/dist/lang/de.umd.min.js +1 -1
  49. package/dist/lang/el.umd.min.js +1 -1
  50. package/dist/lang/en-gb.umd.min.js +1 -1
  51. package/dist/lang/en-us.umd.min.js +1 -1
  52. package/dist/lang/eo.umd.min.js +1 -1
  53. package/dist/lang/es.umd.min.js +1 -1
  54. package/dist/lang/et.umd.min.js +1 -1
  55. package/dist/lang/eu.umd.min.js +1 -1
  56. package/dist/lang/fa-ir.umd.min.js +1 -1
  57. package/dist/lang/fa.umd.min.js +1 -1
  58. package/dist/lang/fi.umd.min.js +1 -1
  59. package/dist/lang/fr.umd.min.js +1 -1
  60. package/dist/lang/gn.umd.min.js +1 -1
  61. package/dist/lang/he.umd.min.js +1 -1
  62. package/dist/lang/hr.umd.min.js +1 -1
  63. package/dist/lang/hu.umd.min.js +1 -1
  64. package/dist/lang/id.umd.min.js +1 -1
  65. package/dist/lang/is.umd.min.js +1 -1
  66. package/dist/lang/it.umd.min.js +1 -1
  67. package/dist/lang/ja.umd.min.js +1 -1
  68. package/dist/lang/km.umd.min.js +1 -1
  69. package/dist/lang/ko-kr.umd.min.js +1 -1
  70. package/dist/lang/kur-ckb.umd.min.js +1 -1
  71. package/dist/lang/kz.umd.min.js +1 -1
  72. package/dist/lang/lu.umd.min.js +1 -1
  73. package/dist/lang/lv.umd.min.js +1 -1
  74. package/dist/lang/ml.umd.min.js +1 -1
  75. package/dist/lang/mm.umd.min.js +1 -1
  76. package/dist/lang/ms.umd.min.js +1 -1
  77. package/dist/lang/my.umd.min.js +1 -1
  78. package/dist/lang/nb-no.umd.min.js +1 -1
  79. package/dist/lang/nl.umd.min.js +1 -1
  80. package/dist/lang/pl.umd.min.js +1 -1
  81. package/dist/lang/pt-br.umd.min.js +1 -1
  82. package/dist/lang/pt.umd.min.js +1 -1
  83. package/dist/lang/ro.umd.min.js +1 -1
  84. package/dist/lang/ru.umd.min.js +1 -1
  85. package/dist/lang/sk.umd.min.js +1 -1
  86. package/dist/lang/sl.umd.min.js +1 -1
  87. package/dist/lang/sm.umd.min.js +1 -1
  88. package/dist/lang/sr.umd.min.js +1 -1
  89. package/dist/lang/sv.umd.min.js +1 -1
  90. package/dist/lang/ta.umd.min.js +1 -1
  91. package/dist/lang/th.umd.min.js +1 -1
  92. package/dist/lang/tr.umd.min.js +1 -1
  93. package/dist/lang/ug.umd.min.js +1 -1
  94. package/dist/lang/uk.umd.min.js +1 -1
  95. package/dist/lang/uz-Cyrl.umd.min.js +1 -1
  96. package/dist/lang/uz-Latn.umd.min.js +1 -1
  97. package/dist/lang/vi.umd.min.js +1 -1
  98. package/dist/lang/zh-hans.umd.min.js +1 -1
  99. package/dist/lang/zh-hant.umd.min.js +1 -1
  100. package/dist/quasar.addon.css +1 -1
  101. package/dist/quasar.addon.rtl.css +1 -1
  102. package/dist/quasar.common.js +2 -2
  103. package/dist/quasar.css +1 -4
  104. package/dist/quasar.esm.js +2 -2
  105. package/dist/quasar.ie.polyfills.js +1 -1
  106. package/dist/quasar.ie.polyfills.umd.min.js +1 -1
  107. package/dist/quasar.min.css +1 -1
  108. package/dist/quasar.rtl.css +1 -4
  109. package/dist/quasar.rtl.min.css +1 -1
  110. package/dist/quasar.sass +1 -3
  111. package/dist/quasar.styl +1 -3
  112. package/dist/quasar.umd.js +63 -12
  113. package/dist/quasar.umd.min.js +2 -2
  114. package/dist/quasar.umd.modern.js +61 -12
  115. package/dist/quasar.umd.modern.min.js +2 -2
  116. package/dist/web-types/web-types.json +1 -1
  117. package/package.json +1 -1
  118. package/src/components/dialog/QDialog.js +2 -1
  119. package/src/components/infinite-scroll/QInfiniteScroll.js +37 -2
  120. package/src/css/core/visibility.sass +0 -3
  121. package/src/css/core/visibility.styl +0 -3
  122. package/src/mixins/prevent-scroll.js +9 -1
  123. package/src/utils/is.js +11 -6
@@ -2,7 +2,7 @@
2
2
  "$schema": "",
3
3
  "framework": "vue",
4
4
  "name": "quasar",
5
- "version": "1.22.4",
5
+ "version": "1.22.5",
6
6
  "contributions": {
7
7
  "html": {
8
8
  "types-syntax": "typescript",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quasar",
3
- "version": "1.22.4",
3
+ "version": "1.22.5",
4
4
  "description": "Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time",
5
5
  "module": "src/index.esm.js",
6
6
  "typings": "dist/types/index.d.ts",
@@ -372,7 +372,7 @@ export default Vue.extend({
372
372
  staticClass: 'q-dialog__backdrop fixed-full',
373
373
  attrs: backdropAttrs,
374
374
  on: cache(this, 'bkdrop', {
375
- [ this.$q.platform.is.ios === true ? 'click' : 'focusin' ]: this.__onBackdropClick
375
+ [ this.backdropEvt ]: this.__onBackdropClick
376
376
  })
377
377
  })
378
378
  ] : null),
@@ -395,6 +395,7 @@ export default Vue.extend({
395
395
  created () {
396
396
  this.__useTick('__registerTick', '__removeTick')
397
397
  this.__useTimeout('__registerTimeout')
398
+ this.backdropEvt = this.$q.platform.is.ios === true || this.$q.platform.is.safari ? 'click' : 'focusin'
398
399
  },
399
400
 
400
401
  mounted () {
@@ -44,6 +44,12 @@ export default Vue.extend({
44
44
  }
45
45
  },
46
46
 
47
+ computed: {
48
+ renderLoadingSlot () {
49
+ return this.disable !== true && this.isWorking === true
50
+ }
51
+ },
52
+
47
53
  watch: {
48
54
  disable (val) {
49
55
  if (val === true) { this.stop() }
@@ -62,6 +68,14 @@ export default Vue.extend({
62
68
 
63
69
  debounce (val) {
64
70
  this.__setDebounce(val)
71
+ },
72
+
73
+ isFetching () {
74
+ this.__updateSvgAnimations()
75
+ },
76
+
77
+ renderLoadingSlot () {
78
+ this.__updateSvgAnimations()
65
79
  }
66
80
  },
67
81
 
@@ -183,14 +197,34 @@ export default Vue.extend({
183
197
 
184
198
  this.__scrollTarget.addEventListener('scroll', this.poll, passive)
185
199
  }
200
+ },
201
+
202
+ __updateSvgAnimations (isRetry) {
203
+ if (this.renderLoadingSlot === true) {
204
+ const el = this.$refs.loading
205
+
206
+ if (!el) {
207
+ isRetry !== true && this.$nextTick(() => {
208
+ this.__updateSvgAnimations(true)
209
+ })
210
+ return
211
+ }
212
+
213
+ // we need to pause svg animations (if any) when hiding
214
+ // otherwise the browser will keep on recalculating the style
215
+ const action = `${ this.isFetching === true ? 'un' : '' }pauseAnimations`
216
+ Array.from(el.getElementsByTagName('svg')).forEach(el => {
217
+ el[ action ]()
218
+ })
219
+ }
186
220
  }
187
221
  },
188
222
 
189
223
  mounted () {
190
224
  this.immediatePoll = this.poll
191
225
  this.__setDebounce(this.debounce)
192
-
193
226
  this.updateScrollTarget()
227
+ this.isFetching === false && this.__updateSvgAnimations()
194
228
  },
195
229
 
196
230
  activated () {
@@ -212,9 +246,10 @@ export default Vue.extend({
212
246
  render (h) {
213
247
  const child = uniqueSlot(this, 'default', [])
214
248
 
215
- if (this.disable !== true && this.isWorking === true) {
249
+ if (this.renderLoadingSlot === true) {
216
250
  child[this.reverse === false ? 'push' : 'unshift'](
217
251
  h('div', {
252
+ ref: 'loading',
218
253
  staticClass: 'q-infinite-scroll__loading',
219
254
  class: this.isFetching === true ? '' : 'invisible'
220
255
  }, slot(this, 'loading'))
@@ -40,8 +40,6 @@
40
40
  visibility: hidden !important
41
41
  transition: none !important
42
42
  animation: none !important
43
- .invisible svg *
44
- display: none
45
43
  .transparent
46
44
  background: transparent !important
47
45
 
@@ -164,4 +162,3 @@ body.desktop
164
162
  .q-focusable:focus, .q-manual-focusable--focused
165
163
  > .q-focus-helper
166
164
  opacity: .22
167
-
@@ -40,8 +40,6 @@
40
40
  visibility: hidden !important
41
41
  transition: none !important
42
42
  animation: none !important
43
- .invisible svg *
44
- display: none
45
43
  .transparent
46
44
  background: transparent !important
47
45
 
@@ -163,4 +161,3 @@ body.desktop
163
161
  .q-focusable:focus, .q-manual-focusable--focused
164
162
  > .q-focus-helper
165
163
  opacity: .22
166
-
@@ -10,6 +10,7 @@ let
10
10
  vpPendingUpdate = false,
11
11
  bodyLeft,
12
12
  bodyTop,
13
+ href,
13
14
  closeTimer
14
15
 
15
16
  function onWheel (e) {
@@ -96,6 +97,8 @@ function apply (action) {
96
97
  bodyLeft = body.style.left
97
98
  bodyTop = body.style.top
98
99
 
100
+ href = window.location.href
101
+
99
102
  body.style.left = `-${scrollPositionX}px`
100
103
  body.style.top = `-${scrollPositionY}px`
101
104
  if (overflowY !== 'hidden' && (overflowY === 'scroll' || body.scrollHeight > window.innerHeight)) {
@@ -104,6 +107,7 @@ function apply (action) {
104
107
 
105
108
  body.classList.add('q-body--prevent-scroll')
106
109
  document.qScrollPrevented = true
110
+
107
111
  if (client.is.ios === true) {
108
112
  if (hasViewport === true) {
109
113
  window.scrollTo(0, 0)
@@ -140,7 +144,11 @@ function apply (action) {
140
144
  body.style.left = bodyLeft
141
145
  body.style.top = bodyTop
142
146
 
143
- window.scrollTo(scrollPositionX, scrollPositionY)
147
+ // scroll back only if route has not changed
148
+ if (window.location.href === href) {
149
+ window.scrollTo(scrollPositionX, scrollPositionY)
150
+ }
151
+
144
152
  maxScrollTop = void 0
145
153
  }
146
154
  }
package/src/utils/is.js CHANGED
@@ -36,20 +36,23 @@ export function isDeepEqual (a, b) {
36
36
  return false
37
37
  }
38
38
 
39
- i = a.entries().next()
39
+ let iter = a.entries()
40
+
41
+ i = iter.next()
40
42
  while (i.done !== true) {
41
43
  if (b.has(i.value[0]) !== true) {
42
44
  return false
43
45
  }
44
- i = i.next()
46
+ i = iter.next()
45
47
  }
46
48
 
47
- i = a.entries().next()
49
+ iter = a.entries()
50
+ i = iter.next()
48
51
  while (i.done !== true) {
49
52
  if (isDeepEqual(i.value[1], b.get(i.value[0])) !== true) {
50
53
  return false
51
54
  }
52
- i = i.next()
55
+ i = iter.next()
53
56
  }
54
57
 
55
58
  return true
@@ -60,12 +63,14 @@ export function isDeepEqual (a, b) {
60
63
  return false
61
64
  }
62
65
 
63
- i = a.entries().next()
66
+ const iter = a.entries()
67
+
68
+ i = iter.next()
64
69
  while (i.done !== true) {
65
70
  if (b.has(i.value[0]) !== true) {
66
71
  return false
67
72
  }
68
- i = i.next()
73
+ i = iter.next()
69
74
  }
70
75
 
71
76
  return true