quasar 2.11.1 → 2.11.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.
- package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
- package/dist/icon-set/eva-icons.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
- package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
- package/dist/icon-set/line-awesome.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
- package/dist/icon-set/material-icons.umd.prod.js +1 -1
- package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
- package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
- package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v7.umd.prod.js +1 -1
- package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
- package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +2 -2
- package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-round.umd.prod.js +2 -2
- package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +2 -2
- package/dist/icon-set/svg-material-icons.umd.prod.js +2 -2
- package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +2 -2
- package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +2 -2
- package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-mdi-v7.umd.prod.js +1 -1
- package/dist/icon-set/svg-themify.umd.prod.js +1 -1
- package/dist/icon-set/themify.umd.prod.js +1 -1
- package/dist/lang/ar-TN.umd.prod.js +1 -1
- package/dist/lang/ar.umd.prod.js +1 -1
- package/dist/lang/az-Latn.umd.prod.js +1 -1
- package/dist/lang/bg.umd.prod.js +1 -1
- package/dist/lang/bn.umd.prod.js +1 -1
- package/dist/lang/ca.umd.prod.js +1 -1
- package/dist/lang/cs.umd.prod.js +1 -1
- package/dist/lang/da.umd.prod.js +1 -1
- package/dist/lang/de.umd.prod.js +1 -1
- package/dist/lang/el.umd.prod.js +1 -1
- package/dist/lang/en-GB.umd.prod.js +1 -1
- package/dist/lang/en-US.umd.prod.js +1 -1
- package/dist/lang/eo.umd.prod.js +1 -1
- package/dist/lang/es.umd.prod.js +1 -1
- package/dist/lang/et.umd.prod.js +1 -1
- package/dist/lang/eu.umd.prod.js +1 -1
- package/dist/lang/fa-IR.umd.prod.js +1 -1
- package/dist/lang/fa.umd.prod.js +1 -1
- package/dist/lang/fi.umd.prod.js +1 -1
- package/dist/lang/fr.umd.prod.js +1 -1
- package/dist/lang/gn.umd.prod.js +1 -1
- package/dist/lang/he.umd.prod.js +1 -1
- package/dist/lang/hr.umd.prod.js +1 -1
- package/dist/lang/hu.umd.prod.js +1 -1
- package/dist/lang/id.umd.prod.js +1 -1
- package/dist/lang/is.umd.prod.js +1 -1
- package/dist/lang/it.umd.prod.js +1 -1
- package/dist/lang/ja.umd.prod.js +1 -1
- package/dist/lang/kk.umd.prod.js +1 -1
- package/dist/lang/km.umd.prod.js +1 -1
- package/dist/lang/ko-KR.umd.prod.js +1 -1
- package/dist/lang/kur-CKB.umd.prod.js +1 -1
- package/dist/lang/lt.umd.prod.js +1 -1
- package/dist/lang/lu.umd.prod.js +1 -1
- package/dist/lang/lv.umd.prod.js +1 -1
- package/dist/lang/ml.umd.prod.js +1 -1
- package/dist/lang/mm.umd.prod.js +1 -1
- package/dist/lang/ms.umd.prod.js +1 -1
- package/dist/lang/my.umd.prod.js +1 -1
- package/dist/lang/nb-NO.umd.prod.js +1 -1
- package/dist/lang/nl.umd.prod.js +1 -1
- package/dist/lang/pl.umd.prod.js +1 -1
- package/dist/lang/pt-BR.umd.prod.js +1 -1
- package/dist/lang/pt.umd.prod.js +1 -1
- package/dist/lang/ro.umd.prod.js +1 -1
- package/dist/lang/ru.umd.prod.js +1 -1
- package/dist/lang/sk.umd.prod.js +1 -1
- package/dist/lang/sl.umd.prod.js +1 -1
- package/dist/lang/sm.umd.prod.js +1 -1
- package/dist/lang/sr-CYR.umd.prod.js +1 -1
- package/dist/lang/sr.umd.prod.js +1 -1
- package/dist/lang/sv.umd.prod.js +1 -1
- package/dist/lang/ta.umd.prod.js +1 -1
- package/dist/lang/th.umd.prod.js +1 -1
- package/dist/lang/tr.umd.prod.js +1 -1
- package/dist/lang/ug.umd.prod.js +1 -1
- package/dist/lang/uk.umd.prod.js +1 -1
- package/dist/lang/uz-Cyrl.umd.prod.js +1 -1
- package/dist/lang/uz-Latn.umd.prod.js +1 -1
- package/dist/lang/vi.umd.prod.js +1 -1
- package/dist/lang/zh-CN.umd.prod.js +1 -1
- package/dist/lang/zh-TW.umd.prod.js +1 -1
- package/dist/quasar.cjs.prod.js +2 -2
- package/dist/quasar.css +8 -3
- package/dist/quasar.esm.js +73 -64
- package/dist/quasar.esm.prod.js +2 -2
- package/dist/quasar.prod.css +1 -1
- package/dist/quasar.rtl.css +9 -3
- package/dist/quasar.rtl.prod.css +1 -1
- package/dist/quasar.sass +8 -3
- package/dist/quasar.umd.js +73 -64
- package/dist/quasar.umd.prod.js +2 -2
- package/dist/web-types/web-types.json +1 -1
- package/package.json +1 -1
- package/src/body.js +34 -4
- package/src/components/tabs/QTabs.js +35 -57
- package/src/components/tabs/QTabs.sass +5 -1
- package/src/css/core/mouse.sass +3 -1
- package/src/plugins/Platform.js +1 -1
package/package.json
CHANGED
package/src/body.js
CHANGED
|
@@ -45,21 +45,51 @@ function getBodyClasses ({ is, has, within }, cfg) {
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
function applyClientSsrCorrections () {
|
|
48
|
+
const { is } = client
|
|
48
49
|
const classes = document.body.className
|
|
49
|
-
|
|
50
|
+
|
|
51
|
+
const classList = new Set(classes.replace(/ {2}/g, ' ').split(' '))
|
|
50
52
|
|
|
51
53
|
if (iosCorrection !== void 0) {
|
|
52
|
-
|
|
54
|
+
classList.delete('desktop')
|
|
55
|
+
classList.add('platform-ios')
|
|
56
|
+
classList.add('mobile')
|
|
57
|
+
}
|
|
58
|
+
// else: is it SSG?
|
|
59
|
+
else if (is.nativeMobile !== true && is.electron !== true && is.bex !== true) {
|
|
60
|
+
if (is.desktop === true) {
|
|
61
|
+
classList.delete('mobile')
|
|
62
|
+
classList.delete('platform-ios')
|
|
63
|
+
classList.delete('platform-android')
|
|
64
|
+
classList.add('desktop')
|
|
65
|
+
}
|
|
66
|
+
else if (is.mobile === true) {
|
|
67
|
+
classList.delete('desktop')
|
|
68
|
+
classList.add('mobile')
|
|
69
|
+
|
|
70
|
+
const mobile = getMobilePlatform(is)
|
|
71
|
+
if (mobile !== void 0) {
|
|
72
|
+
classList.add(`platform-${ mobile }`)
|
|
73
|
+
classList.delete(`platform-${ mobile === 'ios' ? 'android' : 'ios' }`)
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
classList.delete('platform-ios')
|
|
77
|
+
classList.delete('platform-android')
|
|
78
|
+
}
|
|
79
|
+
}
|
|
53
80
|
}
|
|
54
81
|
|
|
55
82
|
if (client.has.touch === true) {
|
|
56
|
-
|
|
83
|
+
classList.delete('no-touch')
|
|
84
|
+
classList.add('touch')
|
|
57
85
|
}
|
|
58
86
|
|
|
59
87
|
if (client.within.iframe === true) {
|
|
60
|
-
|
|
88
|
+
classList.add('within-iframe')
|
|
61
89
|
}
|
|
62
90
|
|
|
91
|
+
const newCls = Array.from(classList).join(' ')
|
|
92
|
+
|
|
63
93
|
if (classes !== newCls) {
|
|
64
94
|
document.body.className = newCls
|
|
65
95
|
}
|
|
@@ -7,7 +7,6 @@ import useTick from '../../composables/private/use-tick.js'
|
|
|
7
7
|
import useTimeout from '../../composables/private/use-timeout.js'
|
|
8
8
|
|
|
9
9
|
import { createComponent } from '../../utils/private/create.js'
|
|
10
|
-
import { noop } from '../../utils/event.js'
|
|
11
10
|
import { hSlot } from '../../utils/private/render.js'
|
|
12
11
|
import { tabsKey } from '../../utils/private/symbols.js'
|
|
13
12
|
import { rtlHasScrollBug } from '../../utils/private/rtl.js'
|
|
@@ -85,18 +84,11 @@ export default createComponent({
|
|
|
85
84
|
const rightArrow = ref(false)
|
|
86
85
|
const justify = ref(false)
|
|
87
86
|
|
|
88
|
-
const arrowsEnabled = computed(() =>
|
|
89
|
-
$q.platform.is.desktop === true || props.mobileArrows === true
|
|
90
|
-
)
|
|
91
|
-
|
|
92
87
|
const tabDataList = []
|
|
93
88
|
const tabDataListLen = ref(0)
|
|
94
89
|
const hasFocus = ref(false)
|
|
95
90
|
|
|
96
91
|
let animateTimer, scrollTimer, unwatchRoute
|
|
97
|
-
let localUpdateArrows = arrowsEnabled.value === true
|
|
98
|
-
? updateArrowsFn
|
|
99
|
-
: noop
|
|
100
92
|
|
|
101
93
|
const tabProps = computed(() => ({
|
|
102
94
|
activeClass: props.activeClass,
|
|
@@ -137,17 +129,17 @@ export default createComponent({
|
|
|
137
129
|
'q-tabs row no-wrap items-center'
|
|
138
130
|
+ ` q-tabs--${ scrollable.value === true ? '' : 'not-' }scrollable`
|
|
139
131
|
+ ` q-tabs--${ props.vertical === true ? 'vertical' : 'horizontal' }`
|
|
140
|
-
+ ` q-tabs__arrows--${
|
|
132
|
+
+ ` q-tabs__arrows--${ props.outsideArrows === true ? 'outside' : 'inside' }`
|
|
133
|
+
+ ` q-tabs--mobile-with${ props.mobileArrows === true ? '' : 'out' }-arrows`
|
|
141
134
|
+ (props.dense === true ? ' q-tabs--dense' : '')
|
|
142
135
|
+ (props.shrink === true ? ' col-shrink' : '')
|
|
143
136
|
+ (props.stretch === true ? ' self-stretch' : '')
|
|
144
137
|
)
|
|
145
138
|
|
|
146
139
|
const innerClass = computed(() =>
|
|
147
|
-
'q-tabs__content row no-wrap items-center self-stretch hide-scrollbar relative-position '
|
|
140
|
+
'q-tabs__content scroll--mobile row no-wrap items-center self-stretch hide-scrollbar relative-position '
|
|
148
141
|
+ alignClass.value
|
|
149
142
|
+ (props.contentClass !== void 0 ? ` ${ props.contentClass }` : '')
|
|
150
|
-
+ ($q.platform.is.mobile === true ? ' scroll' : '')
|
|
151
143
|
)
|
|
152
144
|
|
|
153
145
|
const domProps = computed(() => (
|
|
@@ -159,25 +151,15 @@ export default createComponent({
|
|
|
159
151
|
const isRTL = computed(() => props.vertical !== true && $q.lang.rtl === true)
|
|
160
152
|
const rtlPosCorrection = computed(() => rtlHasScrollBug === false && isRTL.value === true)
|
|
161
153
|
|
|
162
|
-
watch(isRTL,
|
|
154
|
+
watch(isRTL, updateArrows)
|
|
163
155
|
|
|
164
156
|
watch(() => props.modelValue, name => {
|
|
165
157
|
updateModel({ name, setCurrent: true, skipEmit: true })
|
|
166
158
|
})
|
|
167
159
|
|
|
168
|
-
watch(() => props.outsideArrows,
|
|
169
|
-
recalculateScroll()
|
|
170
|
-
})
|
|
171
|
-
|
|
172
|
-
watch(arrowsEnabled, v => {
|
|
173
|
-
localUpdateArrows = v === true
|
|
174
|
-
? updateArrowsFn
|
|
175
|
-
: noop
|
|
176
|
-
|
|
177
|
-
recalculateScroll()
|
|
178
|
-
})
|
|
160
|
+
watch(() => props.outsideArrows, recalculateScroll)
|
|
179
161
|
|
|
180
|
-
function updateModel ({ name, setCurrent, skipEmit
|
|
162
|
+
function updateModel ({ name, setCurrent, skipEmit }) {
|
|
181
163
|
if (currentModel.value !== name) {
|
|
182
164
|
if (skipEmit !== true && props[ 'onUpdate:modelValue' ] !== void 0) {
|
|
183
165
|
emit('update:modelValue', name)
|
|
@@ -223,7 +205,7 @@ export default createComponent({
|
|
|
223
205
|
scrollable.value = scroll
|
|
224
206
|
|
|
225
207
|
// Arrows need to be updated even if the scroll status was already true
|
|
226
|
-
scroll === true && registerUpdateArrowsTick(
|
|
208
|
+
scroll === true && registerUpdateArrowsTick(updateArrows)
|
|
227
209
|
|
|
228
210
|
justify.value = size < parseInt(props.breakpoint, 10)
|
|
229
211
|
}
|
|
@@ -280,34 +262,34 @@ export default createComponent({
|
|
|
280
262
|
|
|
281
263
|
if (offset < 0) {
|
|
282
264
|
contentRef.value[ props.vertical === true ? 'scrollTop' : 'scrollLeft' ] += Math.floor(offset)
|
|
283
|
-
|
|
265
|
+
updateArrows()
|
|
284
266
|
return
|
|
285
267
|
}
|
|
286
268
|
|
|
287
269
|
offset += props.vertical === true ? newPos.height - height : newPos.width - width
|
|
288
270
|
if (offset > 0) {
|
|
289
271
|
contentRef.value[ props.vertical === true ? 'scrollTop' : 'scrollLeft' ] += Math.ceil(offset)
|
|
290
|
-
|
|
272
|
+
updateArrows()
|
|
291
273
|
}
|
|
292
274
|
}
|
|
293
275
|
|
|
294
|
-
function
|
|
276
|
+
function updateArrows () {
|
|
295
277
|
const content = contentRef.value
|
|
296
|
-
if (content
|
|
297
|
-
const
|
|
298
|
-
rect = content.getBoundingClientRect(),
|
|
299
|
-
pos = props.vertical === true ? content.scrollTop : Math.abs(content.scrollLeft)
|
|
278
|
+
if (content === null) { return }
|
|
300
279
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
280
|
+
const
|
|
281
|
+
rect = content.getBoundingClientRect(),
|
|
282
|
+
pos = props.vertical === true ? content.scrollTop : Math.abs(content.scrollLeft)
|
|
283
|
+
|
|
284
|
+
if (isRTL.value === true) {
|
|
285
|
+
leftArrow.value = Math.ceil(pos + rect.width) < content.scrollWidth - 1
|
|
286
|
+
rightArrow.value = pos > 0
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
leftArrow.value = pos > 0
|
|
290
|
+
rightArrow.value = props.vertical === true
|
|
291
|
+
? Math.ceil(pos + rect.height) < content.scrollHeight
|
|
292
|
+
: Math.ceil(pos + rect.width) < content.scrollWidth
|
|
311
293
|
}
|
|
312
294
|
}
|
|
313
295
|
|
|
@@ -409,7 +391,7 @@ export default createComponent({
|
|
|
409
391
|
}
|
|
410
392
|
|
|
411
393
|
set(content, pos)
|
|
412
|
-
|
|
394
|
+
updateArrows()
|
|
413
395
|
|
|
414
396
|
return done
|
|
415
397
|
}
|
|
@@ -653,17 +635,21 @@ export default createComponent({
|
|
|
653
635
|
})
|
|
654
636
|
|
|
655
637
|
return () => {
|
|
656
|
-
|
|
638
|
+
return h('div', {
|
|
639
|
+
ref: rootRef,
|
|
640
|
+
class: classes.value,
|
|
641
|
+
role: 'tablist',
|
|
642
|
+
onFocusin,
|
|
643
|
+
onFocusout
|
|
644
|
+
}, [
|
|
657
645
|
h(QResizeObserver, { onResize: updateContainer }),
|
|
658
646
|
|
|
659
647
|
h('div', {
|
|
660
648
|
ref: contentRef,
|
|
661
649
|
class: innerClass.value,
|
|
662
|
-
onScroll:
|
|
663
|
-
}, hSlot(slots.default))
|
|
664
|
-
]
|
|
650
|
+
onScroll: updateArrows
|
|
651
|
+
}, hSlot(slots.default)),
|
|
665
652
|
|
|
666
|
-
arrowsEnabled.value === true && child.push(
|
|
667
653
|
h(QIcon, {
|
|
668
654
|
class: 'q-tabs__arrow q-tabs__arrow--left absolute q-tab__icon'
|
|
669
655
|
+ (leftArrow.value === true ? '' : ' q-tabs__arrow--faded'),
|
|
@@ -685,15 +671,7 @@ export default createComponent({
|
|
|
685
671
|
onMouseleavePassive: stopAnimScroll,
|
|
686
672
|
onTouchendPassive: stopAnimScroll
|
|
687
673
|
})
|
|
688
|
-
)
|
|
689
|
-
|
|
690
|
-
return h('div', {
|
|
691
|
-
ref: rootRef,
|
|
692
|
-
class: classes.value,
|
|
693
|
-
role: 'tablist',
|
|
694
|
-
onFocusin,
|
|
695
|
-
onFocusout
|
|
696
|
-
}, child)
|
|
674
|
+
])
|
|
697
675
|
}
|
|
698
676
|
}
|
|
699
677
|
})
|
|
@@ -93,7 +93,11 @@
|
|
|
93
93
|
.q-tabs__arrow--faded
|
|
94
94
|
display: none
|
|
95
95
|
|
|
96
|
-
&--not-scrollable
|
|
96
|
+
&--not-scrollable,
|
|
97
|
+
body.mobile &--scrollable.q-tabs--mobile-without-arrows
|
|
98
|
+
&.q-tabs__arrows--outside
|
|
99
|
+
padding-left: 0
|
|
100
|
+
padding-right: 0
|
|
97
101
|
.q-tabs__arrow
|
|
98
102
|
display: none
|
|
99
103
|
.q-tabs__content
|
package/src/css/core/mouse.sass
CHANGED
package/src/plugins/Platform.js
CHANGED
|
@@ -308,8 +308,8 @@ const Platform = {
|
|
|
308
308
|
// the rest of the props; we also avoid
|
|
309
309
|
// hydration errors
|
|
310
310
|
opts.onSSRHydrated.push(() => {
|
|
311
|
-
isRuntimeSsrPreHydration.value = false
|
|
312
311
|
Object.assign($q.platform, client)
|
|
312
|
+
isRuntimeSsrPreHydration.value = false
|
|
313
313
|
iosCorrection = void 0
|
|
314
314
|
})
|
|
315
315
|
|