quasar 1.17.1 → 1.17.2

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 (109) hide show
  1. package/dist/api/LoadingBar.json +1 -1
  2. package/dist/api/QAjaxBar.json +23 -4
  3. package/dist/icon-set/bootstrap-icons.umd.min.js +1 -1
  4. package/dist/icon-set/eva-icons.umd.min.js +1 -1
  5. package/dist/icon-set/fontawesome-v5-pro.umd.min.js +1 -1
  6. package/dist/icon-set/fontawesome-v5.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/mdi-v3.umd.min.js +1 -1
  14. package/dist/icon-set/mdi-v4.umd.min.js +1 -1
  15. package/dist/icon-set/mdi-v5.umd.min.js +1 -1
  16. package/dist/icon-set/mdi-v6.umd.min.js +1 -1
  17. package/dist/icon-set/svg-bootstrap-icons.umd.min.js +1 -1
  18. package/dist/icon-set/svg-eva-icons.umd.min.js +1 -1
  19. package/dist/icon-set/svg-fontawesome-v5.umd.min.js +1 -1
  20. package/dist/icon-set/svg-ionicons-v4.umd.min.js +1 -1
  21. package/dist/icon-set/svg-ionicons-v5.umd.min.js +1 -1
  22. package/dist/icon-set/svg-ionicons-v6.umd.min.js +1 -1
  23. package/dist/icon-set/svg-line-awesome.umd.min.js +1 -1
  24. package/dist/icon-set/svg-material-icons-outlined.umd.min.js +1 -1
  25. package/dist/icon-set/svg-material-icons-round.umd.min.js +1 -1
  26. package/dist/icon-set/svg-material-icons-sharp.umd.min.js +1 -1
  27. package/dist/icon-set/svg-material-icons.umd.min.js +1 -1
  28. package/dist/icon-set/svg-mdi-v4.umd.min.js +1 -1
  29. package/dist/icon-set/svg-mdi-v5.umd.min.js +1 -1
  30. package/dist/icon-set/svg-mdi-v6.umd.min.js +1 -1
  31. package/dist/icon-set/svg-themify.umd.min.js +1 -1
  32. package/dist/icon-set/themify.umd.min.js +1 -1
  33. package/dist/lang/ar.umd.min.js +1 -1
  34. package/dist/lang/az-latn.umd.min.js +1 -1
  35. package/dist/lang/bg.umd.min.js +1 -1
  36. package/dist/lang/ca.umd.min.js +1 -1
  37. package/dist/lang/cs.umd.min.js +1 -1
  38. package/dist/lang/da.umd.min.js +1 -1
  39. package/dist/lang/de.umd.min.js +1 -1
  40. package/dist/lang/el.umd.min.js +1 -1
  41. package/dist/lang/en-gb.umd.min.js +1 -1
  42. package/dist/lang/en-us.umd.min.js +1 -1
  43. package/dist/lang/eo.umd.min.js +1 -1
  44. package/dist/lang/es.umd.min.js +1 -1
  45. package/dist/lang/et.umd.min.js +1 -1
  46. package/dist/lang/fa-ir.umd.min.js +1 -1
  47. package/dist/lang/fa.umd.min.js +1 -1
  48. package/dist/lang/fi.umd.min.js +1 -1
  49. package/dist/lang/fr.umd.min.js +1 -1
  50. package/dist/lang/gn.umd.min.js +1 -1
  51. package/dist/lang/he.umd.min.js +1 -1
  52. package/dist/lang/hr.umd.min.js +1 -1
  53. package/dist/lang/hu.umd.min.js +1 -1
  54. package/dist/lang/id.umd.min.js +1 -1
  55. package/dist/lang/is.umd.min.js +1 -1
  56. package/dist/lang/it.umd.min.js +1 -1
  57. package/dist/lang/ja.umd.min.js +1 -1
  58. package/dist/lang/km.umd.min.js +1 -1
  59. package/dist/lang/ko-kr.umd.min.js +1 -1
  60. package/dist/lang/kur-ckb.umd.min.js +1 -1
  61. package/dist/lang/lu.umd.min.js +1 -1
  62. package/dist/lang/lv.umd.min.js +1 -1
  63. package/dist/lang/ml.umd.min.js +1 -1
  64. package/dist/lang/ms.umd.min.js +1 -1
  65. package/dist/lang/nb-no.umd.min.js +1 -1
  66. package/dist/lang/nl.umd.min.js +1 -1
  67. package/dist/lang/pl.umd.min.js +1 -1
  68. package/dist/lang/pt-br.umd.min.js +1 -1
  69. package/dist/lang/pt.umd.min.js +1 -1
  70. package/dist/lang/ro.umd.min.js +1 -1
  71. package/dist/lang/ru.umd.min.js +1 -1
  72. package/dist/lang/sk.umd.min.js +1 -1
  73. package/dist/lang/sl.umd.min.js +1 -1
  74. package/dist/lang/sr.umd.min.js +1 -1
  75. package/dist/lang/sv.umd.min.js +1 -1
  76. package/dist/lang/ta.umd.min.js +1 -1
  77. package/dist/lang/th.umd.min.js +1 -1
  78. package/dist/lang/tr.umd.min.js +1 -1
  79. package/dist/lang/ug.umd.min.js +1 -1
  80. package/dist/lang/uk.umd.min.js +1 -1
  81. package/dist/lang/vi.umd.min.js +1 -1
  82. package/dist/lang/zh-hans.umd.min.js +1 -1
  83. package/dist/lang/zh-hant.umd.min.js +1 -1
  84. package/dist/quasar.addon.css +1 -1
  85. package/dist/quasar.addon.rtl.css +1 -1
  86. package/dist/quasar.common.js +2 -2
  87. package/dist/quasar.css +1 -1
  88. package/dist/quasar.esm.js +2 -2
  89. package/dist/quasar.ie.polyfills.js +1 -1
  90. package/dist/quasar.ie.polyfills.umd.min.js +1 -1
  91. package/dist/quasar.rtl.css +1 -1
  92. package/dist/quasar.sass +1 -1
  93. package/dist/quasar.styl +1 -1
  94. package/dist/quasar.umd.js +143 -58
  95. package/dist/quasar.umd.min.js +2 -2
  96. package/dist/quasar.umd.modern.js +141 -58
  97. package/dist/quasar.umd.modern.min.js +2 -2
  98. package/dist/types/index.d.ts +6 -2
  99. package/dist/vetur/quasar-attributes.json +7 -3
  100. package/dist/vetur/quasar-tags.json +2 -1
  101. package/dist/web-types/web-types.json +14 -5
  102. package/package.json +1 -1
  103. package/src/components/ajax-bar/QAjaxBar.js +48 -26
  104. package/src/components/ajax-bar/QAjaxBar.json +22 -4
  105. package/src/components/icon/QIcon.js +42 -30
  106. package/src/components/icon/QIcon.sass +0 -1
  107. package/src/components/icon/QIcon.styl +0 -1
  108. package/src/components/layout/QLayout.js +49 -0
  109. package/src/plugins/LoadingBar.json +1 -1
@@ -984,14 +984,18 @@ export interface QAjaxBar extends Vue {
984
984
  * Color name for component from the Quasar Color Palette
985
985
  */
986
986
  color? : string
987
+ /**
988
+ * Reverse direction of progress
989
+ */
990
+ reverse? : boolean
987
991
  /**
988
992
  * Skip Ajax hijacking (not a reactive prop)
989
993
  */
990
994
  skipHijack? : boolean
991
995
  /**
992
- * Reverse direction of progress
996
+ * Filter which URL should trigger start() + stop()
993
997
  */
994
- reverse? : boolean
998
+ hijackFilter? : Function
995
999
  /**
996
1000
  * Notify bar you are waiting for a new process to finish
997
1001
  * @param speed Delay (in milliseconds) between progress auto-increments; If delay is 0 then it disables auto-incrementing
@@ -11,13 +11,17 @@
11
11
  "type": "string",
12
12
  "description": "Color name for component from the Quasar Color Palette"
13
13
  },
14
+ "q-ajax-bar/reverse": {
15
+ "type": "boolean",
16
+ "description": "Reverse direction of progress"
17
+ },
14
18
  "q-ajax-bar/skip-hijack": {
15
19
  "type": "boolean",
16
20
  "description": "Skip Ajax hijacking (not a reactive prop)"
17
21
  },
18
- "q-ajax-bar/reverse": {
19
- "type": "boolean",
20
- "description": "Reverse direction of progress"
22
+ "q-ajax-bar/hijack-filter": {
23
+ "type": "function",
24
+ "description": "Filter which URL should trigger start() + stop()"
21
25
  },
22
26
  "q-avatar/size": {
23
27
  "type": "string",
@@ -4,8 +4,9 @@
4
4
  "position",
5
5
  "size",
6
6
  "color",
7
+ "reverse",
7
8
  "skip-hijack",
8
- "reverse"
9
+ "hijack-filter"
9
10
  ],
10
11
  "description": ""
11
12
  },
@@ -2,7 +2,7 @@
2
2
  "$schema": "",
3
3
  "framework": "vue",
4
4
  "name": "quasar",
5
- "version": "1.17.1",
5
+ "version": "1.17.2",
6
6
  "contributions": {
7
7
  "html": {
8
8
  "types-syntax": "typescript",
@@ -44,24 +44,33 @@
44
44
  "doc-url": "https://v1.quasar.dev/vue-components/ajax-bar"
45
45
  },
46
46
  {
47
- "name": "skip-hijack",
47
+ "name": "reverse",
48
48
  "value": {
49
49
  "kind": "expression",
50
50
  "type": "boolean"
51
51
  },
52
- "description": "Skip Ajax hijacking (not a reactive prop)",
52
+ "description": "Reverse direction of progress",
53
53
  "doc-url": "https://v1.quasar.dev/vue-components/ajax-bar",
54
54
  "type": "boolean"
55
55
  },
56
56
  {
57
- "name": "reverse",
57
+ "name": "skip-hijack",
58
58
  "value": {
59
59
  "kind": "expression",
60
60
  "type": "boolean"
61
61
  },
62
- "description": "Reverse direction of progress",
62
+ "description": "Skip Ajax hijacking (not a reactive prop)",
63
63
  "doc-url": "https://v1.quasar.dev/vue-components/ajax-bar",
64
64
  "type": "boolean"
65
+ },
66
+ {
67
+ "name": "hijack-filter",
68
+ "value": {
69
+ "kind": "expression",
70
+ "type": "Function"
71
+ },
72
+ "description": "Filter which URL should trigger start() + stop()",
73
+ "doc-url": "https://v1.quasar.dev/vue-components/ajax-bar"
65
74
  }
66
75
  ],
67
76
  "events": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quasar",
3
- "version": "1.17.1",
3
+ "version": "1.17.2",
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",
@@ -6,22 +6,22 @@ import { ariaHidden } from '../../mixins/attrs'
6
6
 
7
7
  const
8
8
  xhr = isSSR ? null : XMLHttpRequest,
9
- send = isSSR ? null : xhr.prototype.send,
10
- stackStart = [],
11
- stackStop = []
9
+ open = isSSR ? null : xhr.prototype.open,
10
+ positionValues = [ 'top', 'right', 'bottom', 'left' ]
12
11
 
12
+ let stack = []
13
13
  let highjackCount = 0
14
14
 
15
15
  function translate ({ p, pos, active, horiz, reverse, dir }) {
16
16
  let x = 1, y = 1
17
17
 
18
- if (horiz) {
19
- if (reverse) { x = -1 }
18
+ if (horiz === true) {
19
+ if (reverse === true) { x = -1 }
20
20
  if (pos === 'bottom') { y = -1 }
21
21
  return { transform: `translate3d(${x * (p - 100)}%,${active ? 0 : y * -200}%,0)` }
22
22
  }
23
23
 
24
- if (reverse) { y = -1 }
24
+ if (reverse === true) { y = -1 }
25
25
  if (pos === 'right') { x = -1 }
26
26
  return { transform: `translate3d(${active ? 0 : dir * x * -200}%,${y * (p - 100)}%,0)` }
27
27
  }
@@ -47,32 +47,46 @@ function inc (p, amount) {
47
47
  return between(p + amount, 0, 100)
48
48
  }
49
49
 
50
- function highjackAjax (start, stop) {
51
- stackStart.push(start)
52
- stackStop.push(stop)
53
-
50
+ function highjackAjax (stackEntry) {
54
51
  highjackCount++
55
52
 
53
+ stack.push(stackEntry)
54
+
56
55
  if (highjackCount > 1) { return }
57
56
 
58
- function endHandler () {
59
- stackStop.forEach(fn => { fn() })
60
- }
57
+ xhr.prototype.open = function (_, url) {
58
+ const stopStack = []
59
+
60
+ const loadStart = () => {
61
+ stack.forEach(entry => {
62
+ const hijackFilter = entry.getHijackFilter()
63
+ if (
64
+ hijackFilter === null ||
65
+ hijackFilter(url) === true
66
+ ) {
67
+ entry.start()
68
+ stopStack.push(entry.stop)
69
+ }
70
+ })
71
+ }
61
72
 
62
- xhr.prototype.send = function (/* ...args */) {
63
- stackStart.forEach(fn => { fn() })
64
- this.addEventListener('loadend', endHandler, false)
65
- send.apply(this, arguments)
73
+ const loadEnd = () => {
74
+ stopStack.forEach(stop => { stop() })
75
+ }
76
+
77
+ this.addEventListener('loadstart', loadStart, { once: true })
78
+ this.addEventListener('loadend', loadEnd, { once: true })
79
+
80
+ open.apply(this, arguments)
66
81
  }
67
82
  }
68
83
 
69
- function restoreAjax (start, stop) {
70
- stackStart.splice(stackStart.indexOf(start), 1)
71
- stackStop.splice(stackStop.indexOf(stop), 1)
84
+ function restoreAjax (start) {
85
+ stack = stack.filter(entry => entry.start !== start)
72
86
 
73
87
  highjackCount = Math.max(0, highjackCount - 1)
74
88
  if (!highjackCount) {
75
- xhr.prototype.send = send
89
+ xhr.prototype.open = open
76
90
  }
77
91
  }
78
92
 
@@ -83,15 +97,19 @@ export default Vue.extend({
83
97
  position: {
84
98
  type: String,
85
99
  default: 'top',
86
- validator: val => ['top', 'right', 'bottom', 'left'].includes(val)
100
+ validator: val => positionValues.includes(val)
87
101
  },
102
+
88
103
  size: {
89
104
  type: String,
90
105
  default: '2px'
91
106
  },
107
+
92
108
  color: String,
109
+ reverse: Boolean,
110
+
93
111
  skipHijack: Boolean,
94
- reverse: Boolean
112
+ hijackFilter: Function
95
113
  },
96
114
 
97
115
  data () {
@@ -119,7 +137,7 @@ export default Vue.extend({
119
137
  active,
120
138
  horiz: this.horizontal,
121
139
  reverse: this.$q.lang.rtl === true && ['top', 'bottom'].includes(this.position)
122
- ? !this.reverse
140
+ ? this.reverse === false
123
141
  : this.reverse,
124
142
  dir: this.$q.lang.rtl === true ? -1 : 1
125
143
  })
@@ -224,13 +242,17 @@ export default Vue.extend({
224
242
  mounted () {
225
243
  if (this.skipHijack !== true) {
226
244
  this.hijacked = true
227
- highjackAjax(this.start, this.stop)
245
+ highjackAjax({
246
+ start: this.start,
247
+ stop: this.stop,
248
+ getHijackFilter: () => this.hijackFilter || null
249
+ })
228
250
  }
229
251
  },
230
252
 
231
253
  beforeDestroy () {
232
254
  clearTimeout(this.timer)
233
- this.hijacked === true && restoreAjax(this.start, this.stop)
255
+ this.hijacked === true && restoreAjax(this.start)
234
256
  },
235
257
 
236
258
  render (h) {
@@ -22,16 +22,34 @@
22
22
  "extends": "color"
23
23
  },
24
24
 
25
- "skip-hijack": {
25
+ "reverse": {
26
26
  "type": "Boolean",
27
- "desc": "Skip Ajax hijacking (not a reactive prop)",
27
+ "desc": "Reverse direction of progress",
28
28
  "category": "behavior"
29
29
  },
30
30
 
31
- "reverse": {
31
+ "skip-hijack": {
32
32
  "type": "Boolean",
33
- "desc": "Reverse direction of progress",
33
+ "desc": "Skip Ajax hijacking (not a reactive prop)",
34
34
  "category": "behavior"
35
+ },
36
+
37
+ "hijack-filter": {
38
+ "type": "Function",
39
+ "desc": "Filter which URL should trigger start() + stop()",
40
+ "params": {
41
+ "url": {
42
+ "type": "String",
43
+ "desc": "The URL being triggered",
44
+ "examples": [ "https://some.url/path" ]
45
+ }
46
+ },
47
+ "returns": {
48
+ "type": "Boolean",
49
+ "desc": "Should the URL received as param trigger start() + stop()?"
50
+ },
51
+ "category": "behavior",
52
+ "addedIn": "v1.17.2"
35
53
  }
36
54
  },
37
55
 
@@ -6,6 +6,8 @@ import ListenersMixin from '../../mixins/listeners.js'
6
6
 
7
7
  import { slot, mergeSlot } from '../../utils/slot.js'
8
8
 
9
+ const defaultViewBox = '0 0 24 24'
10
+
9
11
  const sameFn = i => i
10
12
  const ionFn = i => `ionicons ${i}`
11
13
 
@@ -66,10 +68,7 @@ export default Vue.extend({
66
68
  let icon = this.name
67
69
 
68
70
  if (!icon) {
69
- return {
70
- none: true,
71
- cls: this.classes
72
- }
71
+ return { none: true }
73
72
  }
74
73
 
75
74
  if (this.$q.iconMapFn !== void 0) {
@@ -80,7 +79,7 @@ export default Vue.extend({
80
79
  }
81
80
  else {
82
81
  return {
83
- cls: res.cls + ' ' + this.classes,
82
+ cls: res.cls,
84
83
  content: res.content !== void 0
85
84
  ? res.content
86
85
  : ' '
@@ -90,41 +89,35 @@ export default Vue.extend({
90
89
  }
91
90
 
92
91
  if (mRE.test(icon) === true) {
93
- const [ def, viewBox ] = icon.split('|')
92
+ const [ def, viewBox = defaultViewBox ] = icon.split('|')
94
93
 
95
94
  return {
96
95
  svg: true,
97
- cls: this.classes,
96
+ viewBox,
98
97
  nodes: def.split('&&').map(path => {
99
98
  const [ d, style, transform ] = path.split('@@')
100
99
  return this.$createElement('path', {
101
- attrs: {
102
- d,
103
- transform
104
- },
100
+ attrs: { d, transform },
105
101
  style
106
102
  })
107
- }),
108
- viewBox: viewBox !== void 0 ? viewBox : '0 0 24 24'
103
+ })
109
104
  }
110
105
  }
111
106
 
112
107
  if (imgRE.test(icon) === true) {
113
108
  return {
114
109
  img: true,
115
- cls: this.classes,
116
110
  src: icon.substring(4)
117
111
  }
118
112
  }
119
113
 
120
114
  if (svgUseRE.test(icon) === true) {
121
- const [ def, viewBox ] = icon.split('|')
115
+ const [ def, viewBox = defaultViewBox ] = icon.split('|')
122
116
 
123
117
  return {
124
118
  svguse: true,
125
- cls: this.classes,
126
119
  src: def.substring(7),
127
- viewBox: viewBox !== void 0 ? viewBox : '0 0 24 24'
120
+ viewBox
128
121
  }
129
122
  }
130
123
 
@@ -158,7 +151,7 @@ export default Vue.extend({
158
151
  }
159
152
 
160
153
  return {
161
- cls: cls + ' ' + this.classes,
154
+ cls,
162
155
  content
163
156
  }
164
157
  }
@@ -166,7 +159,7 @@ export default Vue.extend({
166
159
 
167
160
  render (h) {
168
161
  const data = {
169
- class: this.type.cls,
162
+ class: this.classes,
170
163
  style: this.sizeStyle,
171
164
  on: { ...this.qListeners },
172
165
  attrs: {
@@ -180,25 +173,44 @@ export default Vue.extend({
180
173
  }
181
174
 
182
175
  if (this.type.img === true) {
183
- data.attrs.src = this.type.src
184
- return h('img', data)
176
+ return h('div', data, mergeSlot([
177
+ h('img', {
178
+ class: this.type.cls,
179
+ attrs: { src: this.type.src }
180
+ })
181
+ ], this, 'default'))
185
182
  }
186
183
 
187
184
  if (this.type.svg === true) {
188
- data.attrs.focusable = 'false' /* needed for IE11 */
189
- data.attrs.viewBox = this.type.viewBox
190
-
191
- return h('svg', data, mergeSlot(this.type.nodes, this, 'default'))
185
+ return h('div', data, mergeSlot([
186
+ h('svg', {
187
+ class: this.type.cls,
188
+ attrs: {
189
+ viewBox: this.type.viewBox,
190
+ focusable: 'false' /* needed for IE11 */
191
+ }
192
+ }, this.type.nodes)
193
+ ], this, 'default'))
192
194
  }
193
- if (this.type.svguse === true) {
194
- data.attrs.focusable = 'false' /* needed for IE11 */
195
- data.attrs.viewBox = this.type.viewBox
196
195
 
197
- return h('svg', data, mergeSlot([
198
- h('use', { attrs: { 'xlink:href': this.type.src } })
196
+ if (this.type.svguse === true) {
197
+ return h('div', data, mergeSlot([
198
+ h('svg', {
199
+ class: this.type.cls,
200
+ attrs: {
201
+ viewBox: this.type.viewBox,
202
+ focusable: 'false' /* needed for IE11 */
203
+ }
204
+ }, [
205
+ h('use', { attrs: { 'xlink:href': this.type.src } })
206
+ ])
199
207
  ], this, 'default'))
200
208
  }
201
209
 
210
+ if (this.type.cls !== void 0) {
211
+ data.class += ' ' + this.type.cls
212
+ }
213
+
202
214
  return h(this.tag, data, mergeSlot([
203
215
  this.type.content
204
216
  ], this, 'default'))
@@ -10,7 +10,6 @@
10
10
  text-align: center
11
11
  position: relative
12
12
  box-sizing: content-box
13
-
14
13
  fill: currentColor // for svg paths
15
14
 
16
15
  &:before, &:after
@@ -10,7 +10,6 @@
10
10
  text-align: center
11
11
  position: relative
12
12
  box-sizing: content-box
13
-
14
13
  fill: currentColor // for svg paths
15
14
 
16
15
  &:before, &:after
@@ -109,13 +109,30 @@ export default Vue.extend({
109
109
  classes () {
110
110
  return 'q-layout q-layout--' +
111
111
  (this.container === true ? 'containerized' : 'standard')
112
+ },
113
+
114
+ scrollbarEvtAction () {
115
+ return this.container !== true && this.scrollbarWidth > 0
116
+ ? 'add' : 'remove'
112
117
  }
113
118
  },
114
119
 
120
+ watch: {
121
+ scrollbarEvtAction: '__updateScrollEvent'
122
+ },
123
+
115
124
  created () {
116
125
  this.instances = {}
117
126
  },
118
127
 
128
+ mounted () {
129
+ this.scrollbarEvtAction === 'add' && this.__updateScrollEvent('add')
130
+ },
131
+
132
+ beforeDestroy () {
133
+ this.scrollbarEvtAction === 'add' && this.__updateScrollEvent('remove')
134
+ },
135
+
119
136
  render (h) {
120
137
  const layout = h('div', {
121
138
  class: this.classes,
@@ -210,6 +227,38 @@ export default Vue.extend({
210
227
  this.scrollbarWidth = width
211
228
  }
212
229
  }
230
+ },
231
+
232
+ __updateScrollEvent (action) {
233
+ if (this.timerScrollbar !== void 0 && action === 'remove') {
234
+ clearTimeout(this.timerScrollbar)
235
+ this.__restoreScrollbar()
236
+ }
237
+
238
+ window[`${action}EventListener`]('resize', this.__hideScrollbar)
239
+ },
240
+
241
+ __hideScrollbar () {
242
+ if (this.timerScrollbar === void 0) {
243
+ const el = document.body
244
+
245
+ // if it has no scrollbar then there's nothing to do
246
+ if (el.scrollHeight > this.$q.screen.height) {
247
+ return
248
+ }
249
+
250
+ el.classList.add('hide-scrollbar')
251
+ }
252
+ else {
253
+ clearTimeout(this.timerScrollbar)
254
+ }
255
+
256
+ this.timerScrollbar = setTimeout(this.__restoreScrollbar, 200)
257
+ },
258
+
259
+ __restoreScrollbar () {
260
+ this.timerScrollbar = void 0
261
+ document.body.classList.remove('hide-scrollbar')
213
262
  }
214
263
  }
215
264
  })
@@ -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
  }