quasar 2.11.3 → 2.11.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 (147) hide show
  1. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  2. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  3. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  4. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  5. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  6. package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
  7. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  8. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  9. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  10. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  11. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  12. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  13. package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
  14. package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
  15. package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
  16. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  17. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  18. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  19. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  20. package/dist/icon-set/mdi-v7.umd.prod.js +1 -1
  21. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  22. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  23. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  24. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
  25. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  26. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +1 -1
  34. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
  35. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
  36. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  37. package/dist/icon-set/svg-mdi-v7.umd.prod.js +1 -1
  38. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  39. package/dist/icon-set/themify.umd.prod.js +1 -1
  40. package/dist/lang/ar-TN.umd.prod.js +1 -1
  41. package/dist/lang/ar.umd.prod.js +1 -1
  42. package/dist/lang/az-Latn.umd.prod.js +1 -1
  43. package/dist/lang/bg.umd.prod.js +1 -1
  44. package/dist/lang/bn.umd.prod.js +1 -1
  45. package/dist/lang/ca.umd.prod.js +1 -1
  46. package/dist/lang/cs.umd.prod.js +1 -1
  47. package/dist/lang/da.umd.prod.js +1 -1
  48. package/dist/lang/de.umd.prod.js +1 -1
  49. package/dist/lang/el.umd.prod.js +1 -1
  50. package/dist/lang/en-GB.umd.prod.js +1 -1
  51. package/dist/lang/en-US.umd.prod.js +1 -1
  52. package/dist/lang/eo.umd.prod.js +1 -1
  53. package/dist/lang/es.umd.prod.js +1 -1
  54. package/dist/lang/et.umd.prod.js +1 -1
  55. package/dist/lang/eu.umd.prod.js +1 -1
  56. package/dist/lang/fa-IR.umd.prod.js +1 -1
  57. package/dist/lang/fa.umd.prod.js +1 -1
  58. package/dist/lang/fi.umd.prod.js +1 -1
  59. package/dist/lang/fr.umd.prod.js +1 -1
  60. package/dist/lang/gn.umd.prod.js +1 -1
  61. package/dist/lang/he.umd.prod.js +1 -1
  62. package/dist/lang/hr.umd.prod.js +1 -1
  63. package/dist/lang/hu.umd.prod.js +1 -1
  64. package/dist/lang/id.umd.prod.js +1 -1
  65. package/dist/lang/is.umd.prod.js +1 -1
  66. package/dist/lang/it.umd.prod.js +1 -1
  67. package/dist/lang/ja.umd.prod.js +1 -1
  68. package/dist/lang/kk.umd.prod.js +1 -1
  69. package/dist/lang/km.umd.prod.js +1 -1
  70. package/dist/lang/ko-KR.umd.prod.js +1 -1
  71. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  72. package/dist/lang/lt.umd.prod.js +1 -1
  73. package/dist/lang/lu.umd.prod.js +1 -1
  74. package/dist/lang/lv.umd.prod.js +1 -1
  75. package/dist/lang/ml.umd.prod.js +1 -1
  76. package/dist/lang/mm.umd.prod.js +1 -1
  77. package/dist/lang/ms.umd.prod.js +1 -1
  78. package/dist/lang/my.umd.prod.js +1 -1
  79. package/dist/lang/nb-NO.umd.prod.js +1 -1
  80. package/dist/lang/nl.umd.prod.js +1 -1
  81. package/dist/lang/pl.umd.prod.js +1 -1
  82. package/dist/lang/pt-BR.umd.prod.js +1 -1
  83. package/dist/lang/pt.umd.prod.js +1 -1
  84. package/dist/lang/ro.umd.prod.js +1 -1
  85. package/dist/lang/ru.umd.prod.js +1 -1
  86. package/dist/lang/sk.umd.prod.js +1 -1
  87. package/dist/lang/sl.umd.prod.js +1 -1
  88. package/dist/lang/sm.umd.prod.js +1 -1
  89. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  90. package/dist/lang/sr.umd.prod.js +1 -1
  91. package/dist/lang/sv.umd.prod.js +1 -1
  92. package/dist/lang/ta.umd.prod.js +1 -1
  93. package/dist/lang/th.umd.prod.js +1 -1
  94. package/dist/lang/tr.umd.prod.js +1 -1
  95. package/dist/lang/ug.umd.prod.js +1 -1
  96. package/dist/lang/uk.umd.prod.js +1 -1
  97. package/dist/lang/uz-Cyrl.umd.prod.js +1 -1
  98. package/dist/lang/uz-Latn.umd.prod.js +1 -1
  99. package/dist/lang/vi.umd.prod.js +1 -1
  100. package/dist/lang/zh-CN.umd.prod.js +1 -1
  101. package/dist/lang/zh-TW.umd.prod.js +1 -1
  102. package/dist/quasar.cjs.prod.js +2 -2
  103. package/dist/quasar.css +4 -0
  104. package/dist/quasar.esm.js +375 -175
  105. package/dist/quasar.esm.prod.js +2 -2
  106. package/dist/quasar.prod.css +1 -1
  107. package/dist/quasar.rtl.css +4 -0
  108. package/dist/quasar.rtl.prod.css +1 -1
  109. package/dist/quasar.sass +3 -1
  110. package/dist/quasar.umd.js +375 -175
  111. package/dist/quasar.umd.prod.js +2 -2
  112. package/dist/web-types/web-types.json +1 -1
  113. package/package.json +1 -1
  114. package/src/components/ajax-bar/QAjaxBar.js +13 -5
  115. package/src/components/btn/QBtn.js +3 -2
  116. package/src/components/carousel/QCarousel.js +17 -10
  117. package/src/components/dialog/QDialog.js +8 -4
  118. package/src/components/drawer/QDrawer.js +8 -3
  119. package/src/components/img/QImg.js +25 -11
  120. package/src/components/input/QInput.js +14 -4
  121. package/src/components/layout/QLayout.js +5 -5
  122. package/src/components/menu/QMenu.js +1 -1
  123. package/src/components/pull-to-refresh/QPullToRefresh.js +5 -4
  124. package/src/components/resize-observer/QResizeObserver.js +9 -4
  125. package/src/components/scroll-area/QScrollArea.js +8 -8
  126. package/src/components/select/QSelect.js +19 -8
  127. package/src/components/slide-item/QSlideItem.js +4 -2
  128. package/src/components/slide-transition/QSlideTransition.js +17 -3
  129. package/src/components/tabs/QTabs.js +12 -5
  130. package/src/components/tooltip/QTooltip.js +1 -1
  131. package/src/composables/private/use-anchor.js +8 -3
  132. package/src/composables/private/use-field.js +10 -4
  133. package/src/composables/private/use-portal.js +3 -3
  134. package/src/composables/private/use-timeout.js +6 -3
  135. package/src/css/core/visibility.sass +2 -0
  136. package/src/directives/TouchHold.js +9 -4
  137. package/src/directives/TouchRepeat.js +10 -3
  138. package/src/plugins/Loading.js +5 -5
  139. package/src/plugins/Meta.js +4 -2
  140. package/src/plugins/Notify.js +13 -3
  141. package/src/utils/debounce.js +9 -6
  142. package/src/utils/morph.js +7 -6
  143. package/src/utils/prevent-scroll.js +5 -6
  144. package/src/utils/private/click-outside.js +10 -3
  145. package/src/utils/private/global-dialog.js +1 -1
  146. package/src/utils/private/global-nodes.js +44 -13
  147. package/src/utils/private/position-engine.js +67 -25
@@ -62,17 +62,32 @@ export function getAnchorProps (el, offset) {
62
62
  }
63
63
 
64
64
  return {
65
- top,
66
- left,
67
- right,
68
- bottom,
69
- width,
70
- height,
65
+ top, bottom, height,
66
+ left, right, width,
71
67
  middle: left + (right - left) / 2,
72
68
  center: top + (bottom - top) / 2
73
69
  }
74
70
  }
75
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
+
76
91
  export function getTargetProps (el) {
77
92
  return {
78
93
  top: 0,
@@ -84,6 +99,13 @@ export function getTargetProps (el) {
84
99
  }
85
100
  }
86
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
+
87
109
  // cfg: { el, anchorEl, anchorOrigin, selfOrigin, offset, absoluteOffset, cover, fit, maxHeight, maxWidth }
88
110
  export function setPosition (cfg) {
89
111
  if (client.is.ios === true && window.visualViewport !== void 0) {
@@ -102,25 +124,15 @@ export function setPosition (cfg) {
102
124
  }
103
125
  }
104
126
 
105
- let anchorProps
106
-
107
127
  // scroll position might change
108
128
  // if max-height/-width changes, so we
109
129
  // need to restore it after we calculate
110
130
  // the new positioning
111
131
  const { scrollLeft, scrollTop } = cfg.el
112
132
 
113
- if (cfg.absoluteOffset === void 0) {
114
- anchorProps = getAnchorProps(cfg.anchorEl, cfg.cover === true ? [ 0, 0 ] : cfg.offset)
115
- }
116
- else {
117
- const
118
- { top: anchorTop, left: anchorLeft } = cfg.anchorEl.getBoundingClientRect(),
119
- top = anchorTop + cfg.absoluteOffset.top,
120
- left = anchorLeft + cfg.absoluteOffset.left
121
-
122
- anchorProps = { top, left, width: 1, height: 1, right: left + 1, center: top, middle: left, bottom: top + 1 }
123
- }
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)
124
136
 
125
137
  let elStyle = {
126
138
  maxHeight: cfg.maxHeight,
@@ -137,14 +149,44 @@ export function setPosition (cfg) {
137
149
 
138
150
  Object.assign(cfg.el.style, elStyle)
139
151
 
140
- const
141
- targetProps = getTargetProps(cfg.el),
142
- props = {
143
- top: anchorProps[ cfg.anchorOrigin.vertical ] - targetProps[ cfg.selfOrigin.vertical ],
144
- 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
145
180
  }
146
181
 
147
- 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
+ }
148
190
 
149
191
  elStyle = {
150
192
  top: props.top + 'px',