quasar 1.22.2 → 1.22.4

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 (127) 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 +12 -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 +17 -6
  109. package/dist/quasar.rtl.min.css +1 -1
  110. package/dist/quasar.sass +9 -4
  111. package/dist/quasar.styl +9 -4
  112. package/dist/quasar.umd.js +85 -39
  113. package/dist/quasar.umd.min.js +2 -2
  114. package/dist/quasar.umd.modern.js +80 -36
  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/card/QCard.sass +1 -1
  119. package/src/components/card/QCard.styl +1 -1
  120. package/src/components/dialog/QDialog.js +1 -1
  121. package/src/components/input/QInput.js +1 -1
  122. package/src/components/linear-progress/QLinearProgress.js +8 -6
  123. package/src/components/linear-progress/QLinearProgress.sass +3 -1
  124. package/src/components/linear-progress/QLinearProgress.styl +3 -1
  125. package/src/css/core/visibility.sass +5 -1
  126. package/src/css/core/visibility.styl +5 -1
  127. package/src/utils/private/position-engine.js +67 -30
@@ -2,7 +2,7 @@
2
2
  "$schema": "",
3
3
  "framework": "vue",
4
4
  "name": "quasar",
5
- "version": "1.22.2",
5
+ "version": "1.22.4",
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.2",
3
+ "version": "1.22.4",
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",
@@ -69,7 +69,7 @@
69
69
  padding: 8px
70
70
  align-items: center
71
71
 
72
- .q-btn__wrapper
72
+ .q-btn--rectangle .q-btn__wrapper
73
73
  padding: 0 8px
74
74
 
75
75
  &--horiz
@@ -69,7 +69,7 @@
69
69
  padding: 8px
70
70
  align-items: center
71
71
 
72
- .q-btn__wrapper
72
+ .q-btn--rectangle .q-btn__wrapper
73
73
  padding: 0 8px
74
74
 
75
75
  &--horiz
@@ -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
- focusin: this.__onBackdropClick
375
+ [ this.$q.platform.is.ios === true ? 'click' : 'focusin' ]: this.__onBackdropClick
376
376
  })
377
377
  })
378
378
  ] : null),
@@ -297,8 +297,8 @@ export default Vue.extend({
297
297
  // but keep the total control size the same
298
298
  // Firefox rulez #14263, #14344
299
299
  this.$q.platform.is.firefox !== true && (inp.style.overflow = 'hidden')
300
- inp.style.height = '1px'
301
300
  parentStyle.marginBottom = (inp.scrollHeight - 1) + 'px'
301
+ inp.style.height = '1px'
302
302
 
303
303
  inp.style.height = inp.scrollHeight + 'px'
304
304
  inp.style.overflow = overflow
@@ -68,8 +68,12 @@ export default Vue.extend({
68
68
  return width(this.buffer !== void 0 ? this.buffer : 1, this.widthReverse, this.$q)
69
69
  },
70
70
 
71
+ transitionSuffix () {
72
+ return `with${this.instantFeedback === true ? 'out' : ''}-transition`
73
+ },
74
+
71
75
  trackClass () {
72
- return `q-linear-progress__track--with${this.instantFeedback === true ? 'out' : ''}-transition` +
76
+ return `q-linear-progress__track absolute-full q-linear-progress__track--${this.transitionSuffix}` +
73
77
  ` q-linear-progress__track--${this.isDark === true ? 'dark' : 'light'}` +
74
78
  (this.trackColor !== void 0 ? ` bg-${this.trackColor}` : '')
75
79
  },
@@ -79,7 +83,7 @@ export default Vue.extend({
79
83
  },
80
84
 
81
85
  modelClasses () {
82
- return `q-linear-progress__model--with${this.instantFeedback === true ? 'out' : ''}-transition` +
86
+ return `q-linear-progress__model absolute-full q-linear-progress__model--${this.transitionSuffix}` +
83
87
  ` q-linear-progress__model--${this.motion === true ? 'in' : ''}determinate`
84
88
  },
85
89
 
@@ -88,7 +92,8 @@ export default Vue.extend({
88
92
  },
89
93
 
90
94
  stripeClass () {
91
- return this.reverse === true ? 'absolute-right' : 'absolute-left'
95
+ return `q-linear-progress__stripe q-linear-progress__stripe--${this.transitionSuffix}`
96
+ + ` absolute-${this.reverse === true ? 'right' : 'left'}`
92
97
  },
93
98
 
94
99
  attrs () {
@@ -104,13 +109,11 @@ export default Vue.extend({
104
109
  render (h) {
105
110
  const child = [
106
111
  h('div', {
107
- staticClass: 'q-linear-progress__track absolute-full',
108
112
  style: this.trackStyle,
109
113
  class: this.trackClass
110
114
  }),
111
115
 
112
116
  h('div', {
113
- staticClass: 'q-linear-progress__model absolute-full',
114
117
  style: this.modelStyle,
115
118
  class: this.modelClasses
116
119
  })
@@ -118,7 +121,6 @@ export default Vue.extend({
118
121
 
119
122
  this.stripe === true && this.motion === false && child.push(
120
123
  h('div', {
121
- staticClass: 'q-linear-progress__stripe',
122
124
  style: this.stripeStyle,
123
125
  class: this.stripeClass
124
126
  })
@@ -52,10 +52,12 @@
52
52
  background: rgba(255,255,255,.6)
53
53
 
54
54
  &__stripe
55
- transition: width .3s
56
55
  background-image: linear-gradient(45deg, rgba(255,255,255,.15) 25%, rgba(255,255,255,0) 25%, rgba(255,255,255,0) 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, rgba(255,255,255,0) 75%, rgba(255,255,255,0)) !important
57
56
  background-size: 40px 40px !important
58
57
 
58
+ &--with-transition
59
+ transition: width .3s
60
+
59
61
  @keyframes q-linear-progress--indeterminate
60
62
  0%
61
63
  transform: translate3d(-35%, 0, 0) scale3d(.35, 1, 1)
@@ -52,10 +52,12 @@
52
52
  background: rgba(255,255,255,.6)
53
53
 
54
54
  &__stripe
55
- transition: width .3s
56
55
  background-image: linear-gradient(45deg, rgba(255,255,255,.15) 25%, rgba(255,255,255,0) 25%, rgba(255,255,255,0) 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, rgba(255,255,255,0) 75%, rgba(255,255,255,0)) !important
57
56
  background-size: 40px 40px !important
58
57
 
58
+ &--with-transition
59
+ transition: width .3s
60
+
59
61
  @keyframes q-linear-progress--indeterminate
60
62
  0%
61
63
  transform: translate3d(-35%, 0, 0) scale3d(.35, 1, 1)
@@ -36,8 +36,12 @@
36
36
 
37
37
  .hidden
38
38
  display: none !important
39
- .invisible
39
+ .invisible, .invisible *
40
40
  visibility: hidden !important
41
+ transition: none !important
42
+ animation: none !important
43
+ .invisible svg *
44
+ display: none
41
45
  .transparent
42
46
  background: transparent !important
43
47
 
@@ -36,8 +36,12 @@
36
36
 
37
37
  .hidden
38
38
  display: none !important
39
- .invisible
39
+ .invisible, .invisible *
40
40
  visibility: hidden !important
41
+ transition: none !important
42
+ animation: none !important
43
+ .invisible svg *
44
+ display: none
41
45
  .transparent
42
46
  background: transparent !important
43
47
 
@@ -48,11 +48,6 @@ export function parsePosition (pos, rtl) {
48
48
  }
49
49
  }
50
50
 
51
- export function validateCover (val) {
52
- if (val === true || val === false) { return true }
53
- return validatePosition(val)
54
- }
55
-
56
51
  export function getAnchorProps (el, offset) {
57
52
  let { top, left, right, bottom, width, height } = el.getBoundingClientRect()
58
53
 
@@ -67,17 +62,32 @@ export function getAnchorProps (el, offset) {
67
62
  }
68
63
 
69
64
  return {
70
- top,
71
- left,
72
- right,
73
- bottom,
74
- width,
75
- height,
65
+ top, bottom, height,
66
+ left, right, width,
76
67
  middle: left + (right - left) / 2,
77
68
  center: top + (bottom - top) / 2
78
69
  }
79
70
  }
80
71
 
72
+ function getAbsoluteAnchorProps (el, absoluteOffset, offset) {
73
+ let { top, left } = el.getBoundingClientRect()
74
+
75
+ top += absoluteOffset.top
76
+ left += absoluteOffset.left
77
+
78
+ if (offset !== void 0) {
79
+ top += offset[ 1 ]
80
+ left += offset[ 0 ]
81
+ }
82
+
83
+ return {
84
+ top, bottom: top + 1, height: 1,
85
+ left, right: left + 1, width: 1,
86
+ middle: left,
87
+ center: top
88
+ }
89
+ }
90
+
81
91
  export function getTargetProps (el) {
82
92
  return {
83
93
  top: 0,
@@ -89,6 +99,13 @@ export function getTargetProps (el) {
89
99
  }
90
100
  }
91
101
 
102
+ function getTopLeftProps (anchorProps, targetProps, cfg) {
103
+ return {
104
+ top: anchorProps[ cfg.anchorOrigin.vertical ] - targetProps[ cfg.selfOrigin.vertical ],
105
+ left: anchorProps[ cfg.anchorOrigin.horizontal ] - targetProps[ cfg.selfOrigin.horizontal ]
106
+ }
107
+ }
108
+
92
109
  // cfg: { el, anchorEl, anchorOrigin, selfOrigin, offset, absoluteOffset, cover, fit, maxHeight, maxWidth }
93
110
  export function setPosition (cfg) {
94
111
  if (client.is.ios === true && window.visualViewport !== void 0) {
@@ -107,25 +124,15 @@ export function setPosition (cfg) {
107
124
  }
108
125
  }
109
126
 
110
- let anchorProps
111
-
112
127
  // scroll position might change
113
128
  // if max-height/-width changes, so we
114
129
  // need to restore it after we calculate
115
130
  // the new positioning
116
131
  const { scrollLeft, scrollTop } = cfg.el
117
132
 
118
- if (cfg.absoluteOffset === void 0) {
119
- anchorProps = getAnchorProps(cfg.anchorEl, cfg.cover === true ? [0, 0] : cfg.offset)
120
- }
121
- else {
122
- const
123
- { top: anchorTop, left: anchorLeft } = cfg.anchorEl.getBoundingClientRect(),
124
- top = anchorTop + cfg.absoluteOffset.top,
125
- left = anchorLeft + cfg.absoluteOffset.left
126
-
127
- anchorProps = { top, left, width: 1, height: 1, right: left + 1, center: top, middle: left, bottom: top + 1 }
128
- }
133
+ const anchorProps = cfg.absoluteOffset === void 0
134
+ ? getAnchorProps(cfg.anchorEl, cfg.cover === true ? [ 0, 0 ] : cfg.offset)
135
+ : getAbsoluteAnchorProps(cfg.anchorEl, cfg.absoluteOffset, cfg.offset)
129
136
 
130
137
  let elStyle = {
131
138
  maxHeight: cfg.maxHeight,
@@ -142,14 +149,44 @@ export function setPosition (cfg) {
142
149
 
143
150
  Object.assign(cfg.el.style, elStyle)
144
151
 
145
- const
146
- targetProps = getTargetProps(cfg.el),
147
- props = {
148
- top: anchorProps[cfg.anchorOrigin.vertical] - targetProps[cfg.selfOrigin.vertical],
149
- left: anchorProps[cfg.anchorOrigin.horizontal] - targetProps[cfg.selfOrigin.horizontal]
152
+ const targetProps = getTargetProps(cfg.el)
153
+ let props = getTopLeftProps(anchorProps, targetProps, cfg)
154
+
155
+ if (cfg.absoluteOffset === void 0 || cfg.offset === void 0) {
156
+ applyBoundaries(props, anchorProps, targetProps, cfg.anchorOrigin, cfg.selfOrigin)
157
+ }
158
+ else { // we have touch position or context menu with offset
159
+ const { top, left } = props // cache initial values
160
+
161
+ // apply initial boundaries
162
+ applyBoundaries(props, anchorProps, targetProps, cfg.anchorOrigin, cfg.selfOrigin)
163
+
164
+ let hasChanged = false
165
+
166
+ // did it flip vertically?
167
+ if (props.top !== top) {
168
+ hasChanged = true
169
+ const offsetY = 2 * cfg.offset[ 1 ]
170
+ anchorProps.center = anchorProps.top -= offsetY
171
+ anchorProps.bottom -= offsetY + 2
172
+ }
173
+
174
+ // did it flip horizontally?
175
+ if (props.left !== left) {
176
+ hasChanged = true
177
+ const offsetX = 2 * cfg.offset[ 0 ]
178
+ anchorProps.middle = anchorProps.left -= offsetX
179
+ anchorProps.right -= offsetX + 2
150
180
  }
151
181
 
152
- applyBoundaries(props, anchorProps, targetProps, cfg.anchorOrigin, cfg.selfOrigin)
182
+ if (hasChanged === true) {
183
+ // re-calculate props with the new anchor
184
+ props = getTopLeftProps(anchorProps, targetProps, cfg)
185
+
186
+ // and re-apply boundaries
187
+ applyBoundaries(props, anchorProps, targetProps, cfg.anchorOrigin, cfg.selfOrigin)
188
+ }
189
+ }
153
190
 
154
191
  elStyle = {
155
192
  top: props.top + 'px',