quasar 2.16.10 → 2.17.0
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/api/Platform.json +1 -1
- package/dist/api/QOptionGroup.json +1 -1
- package/dist/api/QScrollArea.json +1 -1
- package/dist/api/QSelect.json +1 -1
- package/dist/api/QUploader.json +1 -1
- 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 +1 -1
- 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 +1 -1
- package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
- 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/bs-BA.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-CH.umd.prod.js +1 -1
- package/dist/lang/de-DE.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/hi.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/mk.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-MY.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/tl.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.client.js +753 -2121
- package/dist/quasar.css +3 -2
- package/dist/quasar.prod.css +1 -1
- package/dist/quasar.rtl.css +3 -2
- package/dist/quasar.rtl.prod.css +1 -1
- package/dist/quasar.sass +8 -4
- package/dist/quasar.server.prod.cjs +53 -53
- package/dist/quasar.server.prod.js +51 -51
- package/dist/quasar.umd.js +344 -1715
- package/dist/quasar.umd.prod.js +44 -44
- package/dist/types/index.d.ts +120 -51
- package/dist/vetur/quasar-attributes.json +1 -1
- package/dist/vetur/quasar-tags.json +1 -1
- package/dist/web-types/web-types.json +1 -1
- package/package.json +9 -9
- package/src/components/checkbox/QCheckbox.js +3 -1
- package/src/components/icon/QIcon.js +1 -1
- package/src/components/menu/QMenu.sass +2 -2
- package/src/components/option-group/QOptionGroup.js +38 -15
- package/src/components/option-group/QOptionGroup.json +88 -1
- package/src/components/radio/QRadio.js +3 -1
- package/src/components/scroll-area/QScrollArea.js +115 -107
- package/src/components/scroll-area/QScrollArea.json +40 -0
- package/src/components/scroll-area/ScrollAreaControls.js +54 -0
- package/src/components/select/QSelect.js +16 -18
- package/src/components/select/QSelect.json +7 -0
- package/src/components/space/QSpace.js +1 -2
- package/src/components/spinner/QSpinnerAudio.js +4 -69
- package/src/components/spinner/QSpinnerBall.js +4 -85
- package/src/components/spinner/QSpinnerBars.js +4 -124
- package/src/components/spinner/QSpinnerBox.js +4 -42
- package/src/components/spinner/QSpinnerClock.js +4 -53
- package/src/components/spinner/QSpinnerComment.js +4 -65
- package/src/components/spinner/QSpinnerCube.js +4 -113
- package/src/components/spinner/QSpinnerDots.js +4 -85
- package/src/components/spinner/QSpinnerFacebook.js +4 -84
- package/src/components/spinner/QSpinnerGears.js +4 -40
- package/src/components/spinner/QSpinnerGrid.js +4 -133
- package/src/components/spinner/QSpinnerHearts.js +4 -35
- package/src/components/spinner/QSpinnerHourglass.js +4 -93
- package/src/components/spinner/QSpinnerInfinity.js +4 -24
- package/src/components/spinner/QSpinnerIos.js +4 -155
- package/src/components/spinner/QSpinnerOrbit.js +4 -32
- package/src/components/spinner/QSpinnerOval.js +4 -31
- package/src/components/spinner/QSpinnerPie.js +4 -62
- package/src/components/spinner/QSpinnerPuff.js +4 -64
- package/src/components/spinner/QSpinnerRadio.js +4 -57
- package/src/components/spinner/QSpinnerRings.js +4 -87
- package/src/components/spinner/QSpinnerTail.js +4 -65
- package/src/components/tabs/QRouteTab.js +4 -3
- package/src/components/tabs/QTabs.js +28 -15
- package/src/components/tooltip/QTooltip.sass +2 -0
- package/src/components/uploader/QUploader.json +9 -0
- package/src/components/uploader/QUploader.sass +0 -1
- package/src/components/uploader/uploader-core.js +6 -2
- package/src/composables/private.use-panel/use-panel.js +5 -3
- package/src/css/variables.sass +3 -0
- package/src/plugins/platform/Platform.js +40 -5
- package/src/plugins/platform/Platform.json +52 -69
- package/src/plugins/platform/Platform.test.js +22 -14
- package/src/utils/private.position-engine/position-engine.js +11 -4
|
@@ -1,67 +1,9 @@
|
|
|
1
1
|
import { h } from 'vue'
|
|
2
2
|
|
|
3
3
|
import useSpinner, { useSpinnerProps } from './use-spinner.js'
|
|
4
|
-
|
|
5
4
|
import { createComponent } from '../../utils/private.create/create.js'
|
|
6
5
|
|
|
7
|
-
const
|
|
8
|
-
h('path', {
|
|
9
|
-
d: 'M0 50A50 50 0 0 1 50 0L50 50L0 50',
|
|
10
|
-
fill: 'currentColor',
|
|
11
|
-
opacity: '0.5'
|
|
12
|
-
}, [
|
|
13
|
-
h('animateTransform', {
|
|
14
|
-
attributeName: 'transform',
|
|
15
|
-
type: 'rotate',
|
|
16
|
-
from: '0 50 50',
|
|
17
|
-
to: '360 50 50',
|
|
18
|
-
dur: '0.8s',
|
|
19
|
-
repeatCount: 'indefinite'
|
|
20
|
-
})
|
|
21
|
-
]),
|
|
22
|
-
h('path', {
|
|
23
|
-
d: 'M50 0A50 50 0 0 1 100 50L50 50L50 0',
|
|
24
|
-
fill: 'currentColor',
|
|
25
|
-
opacity: '0.5'
|
|
26
|
-
}, [
|
|
27
|
-
h('animateTransform', {
|
|
28
|
-
attributeName: 'transform',
|
|
29
|
-
type: 'rotate',
|
|
30
|
-
from: '0 50 50',
|
|
31
|
-
to: '360 50 50',
|
|
32
|
-
dur: '1.6s',
|
|
33
|
-
repeatCount: 'indefinite'
|
|
34
|
-
})
|
|
35
|
-
]),
|
|
36
|
-
h('path', {
|
|
37
|
-
d: 'M100 50A50 50 0 0 1 50 100L50 50L100 50',
|
|
38
|
-
fill: 'currentColor',
|
|
39
|
-
opacity: '0.5'
|
|
40
|
-
}, [
|
|
41
|
-
h('animateTransform', {
|
|
42
|
-
attributeName: 'transform',
|
|
43
|
-
type: 'rotate',
|
|
44
|
-
from: '0 50 50',
|
|
45
|
-
to: '360 50 50',
|
|
46
|
-
dur: '2.4s',
|
|
47
|
-
repeatCount: 'indefinite'
|
|
48
|
-
})
|
|
49
|
-
]),
|
|
50
|
-
h('path', {
|
|
51
|
-
d: 'M50 100A50 50 0 0 1 0 50L50 50L50 100',
|
|
52
|
-
fill: 'currentColor',
|
|
53
|
-
opacity: '0.5'
|
|
54
|
-
}, [
|
|
55
|
-
h('animateTransform', {
|
|
56
|
-
attributeName: 'transform',
|
|
57
|
-
type: 'rotate',
|
|
58
|
-
from: '0 50 50',
|
|
59
|
-
to: '360 50 50',
|
|
60
|
-
dur: '3.2s',
|
|
61
|
-
repeatCount: 'indefinite'
|
|
62
|
-
})
|
|
63
|
-
])
|
|
64
|
-
]
|
|
6
|
+
const innerHTML = '<path d="M0 50A50 50 0 0 1 50 0L50 50L0 50" fill="currentColor" opacity="0.5"><animateTransform attributeName="transform" type="rotate" from="0 50 50" to="360 50 50" dur="0.8s" repeatCount="indefinite"></animateTransform></path><path d="M50 0A50 50 0 0 1 100 50L50 50L50 0" fill="currentColor" opacity="0.5"><animateTransform attributeName="transform" type="rotate" from="0 50 50" to="360 50 50" dur="1.6s" repeatCount="indefinite"></animateTransform></path><path d="M100 50A50 50 0 0 1 50 100L50 50L100 50" fill="currentColor" opacity="0.5"><animateTransform attributeName="transform" type="rotate" from="0 50 50" to="360 50 50" dur="2.4s" repeatCount="indefinite"></animateTransform></path><path d="M50 100A50 50 0 0 1 0 50L50 50L50 100" fill="currentColor" opacity="0.5"><animateTransform attributeName="transform" type="rotate" from="0 50 50" to="360 50 50" dur="3.2s" repeatCount="indefinite"></animateTransform></path>'
|
|
65
7
|
|
|
66
8
|
export default createComponent({
|
|
67
9
|
name: 'QSpinnerPie',
|
|
@@ -70,14 +12,14 @@ export default createComponent({
|
|
|
70
12
|
|
|
71
13
|
setup (props) {
|
|
72
14
|
const { cSize, classes } = useSpinner(props)
|
|
73
|
-
|
|
74
15
|
return () => h('svg', {
|
|
75
16
|
class: classes.value,
|
|
76
17
|
width: cSize.value,
|
|
77
18
|
height: cSize.value,
|
|
78
19
|
viewBox: '0 0 100 100',
|
|
79
20
|
preserveAspectRatio: 'xMidYMid',
|
|
80
|
-
xmlns: 'http://www.w3.org/2000/svg'
|
|
81
|
-
|
|
21
|
+
xmlns: 'http://www.w3.org/2000/svg',
|
|
22
|
+
innerHTML
|
|
23
|
+
})
|
|
82
24
|
}
|
|
83
25
|
})
|
|
@@ -1,69 +1,9 @@
|
|
|
1
1
|
import { h } from 'vue'
|
|
2
2
|
|
|
3
3
|
import useSpinner, { useSpinnerProps } from './use-spinner.js'
|
|
4
|
-
|
|
5
4
|
import { createComponent } from '../../utils/private.create/create.js'
|
|
6
5
|
|
|
7
|
-
const
|
|
8
|
-
h('g', {
|
|
9
|
-
fill: 'none',
|
|
10
|
-
'fill-rule': 'evenodd',
|
|
11
|
-
'stroke-width': '2'
|
|
12
|
-
}, [
|
|
13
|
-
h('circle', {
|
|
14
|
-
cx: '22',
|
|
15
|
-
cy: '22',
|
|
16
|
-
r: '1'
|
|
17
|
-
}, [
|
|
18
|
-
h('animate', {
|
|
19
|
-
attributeName: 'r',
|
|
20
|
-
begin: '0s',
|
|
21
|
-
dur: '1.8s',
|
|
22
|
-
values: '1; 20',
|
|
23
|
-
calcMode: 'spline',
|
|
24
|
-
keyTimes: '0; 1',
|
|
25
|
-
keySplines: '0.165, 0.84, 0.44, 1',
|
|
26
|
-
repeatCount: 'indefinite'
|
|
27
|
-
}),
|
|
28
|
-
h('animate', {
|
|
29
|
-
attributeName: 'stroke-opacity',
|
|
30
|
-
begin: '0s',
|
|
31
|
-
dur: '1.8s',
|
|
32
|
-
values: '1; 0',
|
|
33
|
-
calcMode: 'spline',
|
|
34
|
-
keyTimes: '0; 1',
|
|
35
|
-
keySplines: '0.3, 0.61, 0.355, 1',
|
|
36
|
-
repeatCount: 'indefinite'
|
|
37
|
-
})
|
|
38
|
-
]),
|
|
39
|
-
h('circle', {
|
|
40
|
-
cx: '22',
|
|
41
|
-
cy: '22',
|
|
42
|
-
r: '1'
|
|
43
|
-
}, [
|
|
44
|
-
h('animate', {
|
|
45
|
-
attributeName: 'r',
|
|
46
|
-
begin: '-0.9s',
|
|
47
|
-
dur: '1.8s',
|
|
48
|
-
values: '1; 20',
|
|
49
|
-
calcMode: 'spline',
|
|
50
|
-
keyTimes: '0; 1',
|
|
51
|
-
keySplines: '0.165, 0.84, 0.44, 1',
|
|
52
|
-
repeatCount: 'indefinite'
|
|
53
|
-
}),
|
|
54
|
-
h('animate', {
|
|
55
|
-
attributeName: 'stroke-opacity',
|
|
56
|
-
begin: '-0.9s',
|
|
57
|
-
dur: '1.8s',
|
|
58
|
-
values: '1; 0',
|
|
59
|
-
calcMode: 'spline',
|
|
60
|
-
keyTimes: '0; 1',
|
|
61
|
-
keySplines: '0.3, 0.61, 0.355, 1',
|
|
62
|
-
repeatCount: 'indefinite'
|
|
63
|
-
})
|
|
64
|
-
])
|
|
65
|
-
])
|
|
66
|
-
]
|
|
6
|
+
const innerHTML = '<g fill="none" fill-rule="evenodd" stroke-width="2"><circle cx="22" cy="22" r="1"><animate attributeName="r" begin="0s" dur="1.8s" values="1; 20" calcMode="spline" keyTimes="0; 1" keySplines="0.165, 0.84, 0.44, 1" repeatCount="indefinite"></animate><animate attributeName="stroke-opacity" begin="0s" dur="1.8s" values="1; 0" calcMode="spline" keyTimes="0; 1" keySplines="0.3, 0.61, 0.355, 1" repeatCount="indefinite"></animate></circle><circle cx="22" cy="22" r="1"><animate attributeName="r" begin="-0.9s" dur="1.8s" values="1; 20" calcMode="spline" keyTimes="0; 1" keySplines="0.165, 0.84, 0.44, 1" repeatCount="indefinite"></animate><animate attributeName="stroke-opacity" begin="-0.9s" dur="1.8s" values="1; 0" calcMode="spline" keyTimes="0; 1" keySplines="0.3, 0.61, 0.355, 1" repeatCount="indefinite"></animate></circle></g>'
|
|
67
7
|
|
|
68
8
|
export default createComponent({
|
|
69
9
|
name: 'QSpinnerPuff',
|
|
@@ -72,14 +12,14 @@ export default createComponent({
|
|
|
72
12
|
|
|
73
13
|
setup (props) {
|
|
74
14
|
const { cSize, classes } = useSpinner(props)
|
|
75
|
-
|
|
76
15
|
return () => h('svg', {
|
|
77
16
|
class: classes.value,
|
|
78
17
|
stroke: 'currentColor',
|
|
79
18
|
width: cSize.value,
|
|
80
19
|
height: cSize.value,
|
|
81
20
|
viewBox: '0 0 44 44',
|
|
82
|
-
xmlns: 'http://www.w3.org/2000/svg'
|
|
83
|
-
|
|
21
|
+
xmlns: 'http://www.w3.org/2000/svg',
|
|
22
|
+
innerHTML
|
|
23
|
+
})
|
|
84
24
|
}
|
|
85
25
|
})
|
|
@@ -1,62 +1,9 @@
|
|
|
1
1
|
import { h } from 'vue'
|
|
2
2
|
|
|
3
3
|
import useSpinner, { useSpinnerProps } from './use-spinner.js'
|
|
4
|
-
|
|
5
4
|
import { createComponent } from '../../utils/private.create/create.js'
|
|
6
5
|
|
|
7
|
-
const
|
|
8
|
-
h('g', {
|
|
9
|
-
transform: 'scale(0.55)'
|
|
10
|
-
}, [
|
|
11
|
-
h('circle', {
|
|
12
|
-
cx: '30',
|
|
13
|
-
cy: '150',
|
|
14
|
-
r: '30',
|
|
15
|
-
fill: 'currentColor'
|
|
16
|
-
}, [
|
|
17
|
-
h('animate', {
|
|
18
|
-
attributeName: 'opacity',
|
|
19
|
-
from: '0',
|
|
20
|
-
to: '1',
|
|
21
|
-
dur: '1s',
|
|
22
|
-
begin: '0',
|
|
23
|
-
repeatCount: 'indefinite',
|
|
24
|
-
keyTimes: '0;0.5;1',
|
|
25
|
-
values: '0;1;1'
|
|
26
|
-
})
|
|
27
|
-
]),
|
|
28
|
-
h('path', {
|
|
29
|
-
d: 'M90,150h30c0-49.7-40.3-90-90-90v30C63.1,90,90,116.9,90,150z',
|
|
30
|
-
fill: 'currentColor'
|
|
31
|
-
}, [
|
|
32
|
-
h('animate', {
|
|
33
|
-
attributeName: 'opacity',
|
|
34
|
-
from: '0',
|
|
35
|
-
to: '1',
|
|
36
|
-
dur: '1s',
|
|
37
|
-
begin: '0.1',
|
|
38
|
-
repeatCount: 'indefinite',
|
|
39
|
-
keyTimes: '0;0.5;1',
|
|
40
|
-
values: '0;1;1'
|
|
41
|
-
})
|
|
42
|
-
]),
|
|
43
|
-
h('path', {
|
|
44
|
-
d: 'M150,150h30C180,67.2,112.8,0,30,0v30C96.3,30,150,83.7,150,150z',
|
|
45
|
-
fill: 'currentColor'
|
|
46
|
-
}, [
|
|
47
|
-
h('animate', {
|
|
48
|
-
attributeName: 'opacity',
|
|
49
|
-
from: '0',
|
|
50
|
-
to: '1',
|
|
51
|
-
dur: '1s',
|
|
52
|
-
begin: '0.2',
|
|
53
|
-
repeatCount: 'indefinite',
|
|
54
|
-
keyTimes: '0;0.5;1',
|
|
55
|
-
values: '0;1;1'
|
|
56
|
-
})
|
|
57
|
-
])
|
|
58
|
-
])
|
|
59
|
-
]
|
|
6
|
+
const innerHTML = '<g transform="scale(0.55)"><circle cx="30" cy="150" r="30" fill="currentColor"><animate attributeName="opacity" from="0" to="1" dur="1s" begin="0" repeatCount="indefinite" keyTimes="0;0.5;1" values="0;1;1"></animate></circle><path d="M90,150h30c0-49.7-40.3-90-90-90v30C63.1,90,90,116.9,90,150z" fill="currentColor"><animate attributeName="opacity" from="0" to="1" dur="1s" begin="0.1" repeatCount="indefinite" keyTimes="0;0.5;1" values="0;1;1"></animate></path><path d="M150,150h30C180,67.2,112.8,0,30,0v30C96.3,30,150,83.7,150,150z" fill="currentColor"><animate attributeName="opacity" from="0" to="1" dur="1s" begin="0.2" repeatCount="indefinite" keyTimes="0;0.5;1" values="0;1;1"></animate></path></g>'
|
|
60
7
|
|
|
61
8
|
export default createComponent({
|
|
62
9
|
name: 'QSpinnerRadio',
|
|
@@ -65,14 +12,14 @@ export default createComponent({
|
|
|
65
12
|
|
|
66
13
|
setup (props) {
|
|
67
14
|
const { cSize, classes } = useSpinner(props)
|
|
68
|
-
|
|
69
15
|
return () => h('svg', {
|
|
70
16
|
class: classes.value,
|
|
71
17
|
width: cSize.value,
|
|
72
18
|
height: cSize.value,
|
|
73
19
|
viewBox: '0 0 100 100',
|
|
74
20
|
preserveAspectRatio: 'xMidYMid',
|
|
75
|
-
xmlns: 'http://www.w3.org/2000/svg'
|
|
76
|
-
|
|
21
|
+
xmlns: 'http://www.w3.org/2000/svg',
|
|
22
|
+
innerHTML
|
|
23
|
+
})
|
|
77
24
|
}
|
|
78
25
|
})
|
|
@@ -1,92 +1,9 @@
|
|
|
1
1
|
import { h } from 'vue'
|
|
2
2
|
|
|
3
3
|
import useSpinner, { useSpinnerProps } from './use-spinner.js'
|
|
4
|
-
|
|
5
4
|
import { createComponent } from '../../utils/private.create/create.js'
|
|
6
5
|
|
|
7
|
-
const
|
|
8
|
-
h('g', {
|
|
9
|
-
fill: 'none',
|
|
10
|
-
'fill-rule': 'evenodd',
|
|
11
|
-
transform: 'translate(1 1)',
|
|
12
|
-
'stroke-width': '2'
|
|
13
|
-
}, [
|
|
14
|
-
h('circle', {
|
|
15
|
-
cx: '22',
|
|
16
|
-
cy: '22',
|
|
17
|
-
r: '6'
|
|
18
|
-
}, [
|
|
19
|
-
h('animate', {
|
|
20
|
-
attributeName: 'r',
|
|
21
|
-
begin: '1.5s',
|
|
22
|
-
dur: '3s',
|
|
23
|
-
values: '6;22',
|
|
24
|
-
calcMode: 'linear',
|
|
25
|
-
repeatCount: 'indefinite'
|
|
26
|
-
}),
|
|
27
|
-
h('animate', {
|
|
28
|
-
attributeName: 'stroke-opacity',
|
|
29
|
-
begin: '1.5s',
|
|
30
|
-
dur: '3s',
|
|
31
|
-
values: '1;0',
|
|
32
|
-
calcMode: 'linear',
|
|
33
|
-
repeatCount: 'indefinite'
|
|
34
|
-
}),
|
|
35
|
-
h('animate', {
|
|
36
|
-
attributeName: 'stroke-width',
|
|
37
|
-
begin: '1.5s',
|
|
38
|
-
dur: '3s',
|
|
39
|
-
values: '2;0',
|
|
40
|
-
calcMode: 'linear',
|
|
41
|
-
repeatCount: 'indefinite'
|
|
42
|
-
})
|
|
43
|
-
]),
|
|
44
|
-
h('circle', {
|
|
45
|
-
cx: '22',
|
|
46
|
-
cy: '22',
|
|
47
|
-
r: '6'
|
|
48
|
-
}, [
|
|
49
|
-
h('animate', {
|
|
50
|
-
attributeName: 'r',
|
|
51
|
-
begin: '3s',
|
|
52
|
-
dur: '3s',
|
|
53
|
-
values: '6;22',
|
|
54
|
-
calcMode: 'linear',
|
|
55
|
-
repeatCount: 'indefinite'
|
|
56
|
-
}),
|
|
57
|
-
h('animate', {
|
|
58
|
-
attributeName: 'stroke-opacity',
|
|
59
|
-
begin: '3s',
|
|
60
|
-
dur: '3s',
|
|
61
|
-
values: '1;0',
|
|
62
|
-
calcMode: 'linear',
|
|
63
|
-
repeatCount: 'indefinite'
|
|
64
|
-
}),
|
|
65
|
-
h('animate', {
|
|
66
|
-
attributeName: 'stroke-width',
|
|
67
|
-
begin: '3s',
|
|
68
|
-
dur: '3s',
|
|
69
|
-
values: '2;0',
|
|
70
|
-
calcMode: 'linear',
|
|
71
|
-
repeatCount: 'indefinite'
|
|
72
|
-
})
|
|
73
|
-
]),
|
|
74
|
-
h('circle', {
|
|
75
|
-
cx: '22',
|
|
76
|
-
cy: '22',
|
|
77
|
-
r: '8'
|
|
78
|
-
}, [
|
|
79
|
-
h('animate', {
|
|
80
|
-
attributeName: 'r',
|
|
81
|
-
begin: '0s',
|
|
82
|
-
dur: '1.5s',
|
|
83
|
-
values: '6;1;2;3;4;5;6',
|
|
84
|
-
calcMode: 'linear',
|
|
85
|
-
repeatCount: 'indefinite'
|
|
86
|
-
})
|
|
87
|
-
])
|
|
88
|
-
])
|
|
89
|
-
]
|
|
6
|
+
const innerHTML = '<g fill="none" fill-rule="evenodd" transform="translate(1 1)" stroke-width="2"><circle cx="22" cy="22" r="6"><animate attributeName="r" begin="1.5s" dur="3s" values="6;22" calcMode="linear" repeatCount="indefinite"></animate><animate attributeName="stroke-opacity" begin="1.5s" dur="3s" values="1;0" calcMode="linear" repeatCount="indefinite"></animate><animate attributeName="stroke-width" begin="1.5s" dur="3s" values="2;0" calcMode="linear" repeatCount="indefinite"></animate></circle><circle cx="22" cy="22" r="6"><animate attributeName="r" begin="3s" dur="3s" values="6;22" calcMode="linear" repeatCount="indefinite"></animate><animate attributeName="stroke-opacity" begin="3s" dur="3s" values="1;0" calcMode="linear" repeatCount="indefinite"></animate><animate attributeName="stroke-width" begin="3s" dur="3s" values="2;0" calcMode="linear" repeatCount="indefinite"></animate></circle><circle cx="22" cy="22" r="8"><animate attributeName="r" begin="0s" dur="1.5s" values="6;1;2;3;4;5;6" calcMode="linear" repeatCount="indefinite"></animate></circle></g>'
|
|
90
7
|
|
|
91
8
|
export default createComponent({
|
|
92
9
|
name: 'QSpinnerRings',
|
|
@@ -95,14 +12,14 @@ export default createComponent({
|
|
|
95
12
|
|
|
96
13
|
setup (props) {
|
|
97
14
|
const { cSize, classes } = useSpinner(props)
|
|
98
|
-
|
|
99
15
|
return () => h('svg', {
|
|
100
16
|
class: classes.value,
|
|
101
17
|
stroke: 'currentColor',
|
|
102
18
|
width: cSize.value,
|
|
103
19
|
height: cSize.value,
|
|
104
20
|
viewBox: '0 0 45 45',
|
|
105
|
-
xmlns: 'http://www.w3.org/2000/svg'
|
|
106
|
-
|
|
21
|
+
xmlns: 'http://www.w3.org/2000/svg',
|
|
22
|
+
innerHTML
|
|
23
|
+
})
|
|
107
24
|
}
|
|
108
25
|
})
|
|
@@ -1,70 +1,9 @@
|
|
|
1
1
|
import { h } from 'vue'
|
|
2
2
|
|
|
3
3
|
import useSpinner, { useSpinnerProps } from './use-spinner.js'
|
|
4
|
-
|
|
5
4
|
import { createComponent } from '../../utils/private.create/create.js'
|
|
6
5
|
|
|
7
|
-
const
|
|
8
|
-
h('defs', [
|
|
9
|
-
h('linearGradient', {
|
|
10
|
-
x1: '8.042%',
|
|
11
|
-
y1: '0%',
|
|
12
|
-
x2: '65.682%',
|
|
13
|
-
y2: '23.865%',
|
|
14
|
-
id: 'a'
|
|
15
|
-
}, [
|
|
16
|
-
h('stop', {
|
|
17
|
-
'stop-color': 'currentColor',
|
|
18
|
-
'stop-opacity': '0',
|
|
19
|
-
offset: '0%'
|
|
20
|
-
}),
|
|
21
|
-
h('stop', {
|
|
22
|
-
'stop-color': 'currentColor',
|
|
23
|
-
'stop-opacity': '.631',
|
|
24
|
-
offset: '63.146%'
|
|
25
|
-
}),
|
|
26
|
-
h('stop', {
|
|
27
|
-
'stop-color': 'currentColor',
|
|
28
|
-
offset: '100%'
|
|
29
|
-
})
|
|
30
|
-
])
|
|
31
|
-
]),
|
|
32
|
-
h('g', {
|
|
33
|
-
transform: 'translate(1 1)',
|
|
34
|
-
fill: 'none',
|
|
35
|
-
'fill-rule': 'evenodd'
|
|
36
|
-
}, [
|
|
37
|
-
h('path', {
|
|
38
|
-
d: 'M36 18c0-9.94-8.06-18-18-18',
|
|
39
|
-
stroke: 'url(#a)',
|
|
40
|
-
'stroke-width': '2'
|
|
41
|
-
}, [
|
|
42
|
-
h('animateTransform', {
|
|
43
|
-
attributeName: 'transform',
|
|
44
|
-
type: 'rotate',
|
|
45
|
-
from: '0 18 18',
|
|
46
|
-
to: '360 18 18',
|
|
47
|
-
dur: '0.9s',
|
|
48
|
-
repeatCount: 'indefinite'
|
|
49
|
-
})
|
|
50
|
-
]),
|
|
51
|
-
h('circle', {
|
|
52
|
-
fill: 'currentColor',
|
|
53
|
-
cx: '36',
|
|
54
|
-
cy: '18',
|
|
55
|
-
r: '1'
|
|
56
|
-
}, [
|
|
57
|
-
h('animateTransform', {
|
|
58
|
-
attributeName: 'transform',
|
|
59
|
-
type: 'rotate',
|
|
60
|
-
from: '0 18 18',
|
|
61
|
-
to: '360 18 18',
|
|
62
|
-
dur: '0.9s',
|
|
63
|
-
repeatCount: 'indefinite'
|
|
64
|
-
})
|
|
65
|
-
])
|
|
66
|
-
])
|
|
67
|
-
]
|
|
6
|
+
const innerHTML = '<defs><linearGradient x1="8.042%" y1="0%" x2="65.682%" y2="23.865%" id="a"><stop stop-color="currentColor" stop-opacity="0" offset="0%"></stop><stop stop-color="currentColor" stop-opacity=".631" offset="63.146%"></stop><stop stop-color="currentColor" offset="100%"></stop></linearGradient></defs><g transform="translate(1 1)" fill="none" fill-rule="evenodd"><path d="M36 18c0-9.94-8.06-18-18-18" stroke="url(#a)" stroke-width="2"><animateTransform attributeName="transform" type="rotate" from="0 18 18" to="360 18 18" dur="0.9s" repeatCount="indefinite"></animateTransform></path><circle fill="currentColor" cx="36" cy="18" r="1"><animateTransform attributeName="transform" type="rotate" from="0 18 18" to="360 18 18" dur="0.9s" repeatCount="indefinite"></animateTransform></circle></g>'
|
|
68
7
|
|
|
69
8
|
export default createComponent({
|
|
70
9
|
name: 'QSpinnerTail',
|
|
@@ -73,13 +12,13 @@ export default createComponent({
|
|
|
73
12
|
|
|
74
13
|
setup (props) {
|
|
75
14
|
const { cSize, classes } = useSpinner(props)
|
|
76
|
-
|
|
77
15
|
return () => h('svg', {
|
|
78
16
|
class: classes.value,
|
|
79
17
|
width: cSize.value,
|
|
80
18
|
height: cSize.value,
|
|
81
19
|
viewBox: '0 0 38 38',
|
|
82
|
-
xmlns: 'http://www.w3.org/2000/svg'
|
|
83
|
-
|
|
20
|
+
xmlns: 'http://www.w3.org/2000/svg',
|
|
21
|
+
innerHTML
|
|
22
|
+
})
|
|
84
23
|
}
|
|
85
24
|
})
|
|
@@ -30,9 +30,10 @@ export default createComponent({
|
|
|
30
30
|
}
|
|
31
31
|
)
|
|
32
32
|
|
|
33
|
-
watch(
|
|
34
|
-
$
|
|
35
|
-
|
|
33
|
+
watch(
|
|
34
|
+
() => `${ props.name } | ${ props.exact } | ${ (routeData.resolvedLink.value || {}).href }`,
|
|
35
|
+
$tabs.verifyRouteModel
|
|
36
|
+
)
|
|
36
37
|
|
|
37
38
|
return () => renderTab(routeData.linkTag.value, routeData.linkAttrs.value)
|
|
38
39
|
}
|
|
@@ -160,18 +160,18 @@ export default createComponent({
|
|
|
160
160
|
watch(() => props.outsideArrows, recalculateScroll)
|
|
161
161
|
|
|
162
162
|
function updateModel ({ name, setCurrent, skipEmit }) {
|
|
163
|
-
if (currentModel.value
|
|
164
|
-
if (skipEmit !== true && props[ 'onUpdate:modelValue' ] !== void 0) {
|
|
165
|
-
emit('update:modelValue', name)
|
|
166
|
-
}
|
|
163
|
+
if (currentModel.value === name) return
|
|
167
164
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
165
|
+
if (skipEmit !== true && props[ 'onUpdate:modelValue' ] !== void 0) {
|
|
166
|
+
emit('update:modelValue', name)
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
if (
|
|
170
|
+
setCurrent === true
|
|
171
|
+
|| props[ 'onUpdate:modelValue' ] === void 0
|
|
172
|
+
) {
|
|
173
|
+
animate(currentModel.value, name)
|
|
174
|
+
currentModel.value = name
|
|
175
175
|
}
|
|
176
176
|
}
|
|
177
177
|
|
|
@@ -219,7 +219,13 @@ export default createComponent({
|
|
|
219
219
|
? tabDataList.find(tab => tab.name.value === newName)
|
|
220
220
|
: null
|
|
221
221
|
|
|
222
|
-
if (
|
|
222
|
+
if (hadActivated === true) {
|
|
223
|
+
// After the component has been re-activated
|
|
224
|
+
// we should not animate the transition.
|
|
225
|
+
// Consider it as if the component has just been mounted.
|
|
226
|
+
hadActivated = false
|
|
227
|
+
}
|
|
228
|
+
else if (oldTab && newTab) {
|
|
223
229
|
const
|
|
224
230
|
oldEl = oldTab.tabIndicatorRef.value,
|
|
225
231
|
newEl = newTab.tabIndicatorRef.value
|
|
@@ -413,7 +419,8 @@ export default createComponent({
|
|
|
413
419
|
return true
|
|
414
420
|
}
|
|
415
421
|
|
|
416
|
-
//
|
|
422
|
+
// 1. Do not use directly; use verifyRouteModel() instead
|
|
423
|
+
// 2. Should set hadActivated to false upon exit
|
|
417
424
|
function updateActiveRoute () {
|
|
418
425
|
let name = null, bestScore = { matchedLen: 0, queryDiff: 9999, hrefLen: 0 }
|
|
419
426
|
|
|
@@ -506,6 +513,7 @@ export default createComponent({
|
|
|
506
513
|
&& tabDataList.some(tab => tab.routeData === void 0 && tab.name.value === currentModel.value) === true
|
|
507
514
|
) {
|
|
508
515
|
// we shouldn't interfere if non-route tab is active
|
|
516
|
+
hadActivated = false
|
|
509
517
|
return
|
|
510
518
|
}
|
|
511
519
|
|
|
@@ -627,7 +635,7 @@ export default createComponent({
|
|
|
627
635
|
unwatchRoute !== void 0 && unwatchRoute()
|
|
628
636
|
}
|
|
629
637
|
|
|
630
|
-
let hadRouteWatcher
|
|
638
|
+
let hadRouteWatcher, hadActivated
|
|
631
639
|
|
|
632
640
|
onBeforeUnmount(cleanup)
|
|
633
641
|
|
|
@@ -637,7 +645,12 @@ export default createComponent({
|
|
|
637
645
|
})
|
|
638
646
|
|
|
639
647
|
onActivated(() => {
|
|
640
|
-
hadRouteWatcher === true
|
|
648
|
+
if (hadRouteWatcher === true) {
|
|
649
|
+
watchRoute()
|
|
650
|
+
hadActivated = true
|
|
651
|
+
verifyRouteModel()
|
|
652
|
+
}
|
|
653
|
+
|
|
641
654
|
recalculateScroll()
|
|
642
655
|
})
|
|
643
656
|
|
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
overflow-y: auto
|
|
13
13
|
overflow-x: hidden
|
|
14
14
|
padding: $tooltip-padding
|
|
15
|
+
max-width: $tooltip-max-width // required by the position-engine
|
|
16
|
+
max-height: $tooltip-max-height // required by the position-engine
|
|
15
17
|
|
|
16
18
|
@media (max-width: $breakpoint-xs-max)
|
|
17
19
|
font-size: $tooltip-mobile-fontsize
|
|
@@ -55,6 +55,15 @@
|
|
|
55
55
|
"category": "behavior"
|
|
56
56
|
},
|
|
57
57
|
|
|
58
|
+
"thumbnail-fit": {
|
|
59
|
+
"type": "String",
|
|
60
|
+
"desc": "How the thumbnail image will fit into the container; Equivalent of the background-size prop",
|
|
61
|
+
"default": "'cover'",
|
|
62
|
+
"examples": [ "'cover'", "'contain'", "'auto'", "'50%'" ],
|
|
63
|
+
"category": "style",
|
|
64
|
+
"addedIn": "v2.17"
|
|
65
|
+
},
|
|
66
|
+
|
|
58
67
|
"disable": {
|
|
59
68
|
"extends": "disable"
|
|
60
69
|
},
|
|
@@ -32,9 +32,13 @@ export const coreProps = {
|
|
|
32
32
|
bordered: Boolean,
|
|
33
33
|
|
|
34
34
|
noThumbnails: Boolean,
|
|
35
|
+
thumbnailFit: {
|
|
36
|
+
type: String,
|
|
37
|
+
default: 'cover'
|
|
38
|
+
},
|
|
39
|
+
|
|
35
40
|
autoUpload: Boolean,
|
|
36
41
|
hideUploadBtn: Boolean,
|
|
37
|
-
|
|
38
42
|
disable: Boolean,
|
|
39
43
|
readonly: Boolean
|
|
40
44
|
}
|
|
@@ -389,7 +393,7 @@ export function getRenderer (getPlugin, expose) {
|
|
|
389
393
|
: (file.__status === 'uploaded' ? ' q-uploader__file--uploaded' : '')
|
|
390
394
|
),
|
|
391
395
|
style: props.noThumbnails !== true && file.__img !== void 0
|
|
392
|
-
? { backgroundImage: 'url("' + file.__img.src + '")' }
|
|
396
|
+
? { backgroundImage: 'url("' + file.__img.src + '")', backgroundSize: props.thumbnailFit }
|
|
393
397
|
: null
|
|
394
398
|
}, [
|
|
395
399
|
h('div', {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { h, ref, computed, watch,
|
|
1
|
+
import { h, ref, computed, watch, getCurrentInstance, Transition, KeepAlive } from 'vue'
|
|
2
2
|
|
|
3
3
|
import TouchSwipe from '../../directives/touch-swipe/TouchSwipe.js'
|
|
4
4
|
|
|
5
5
|
import useRenderCache from '../../composables/use-render-cache/use-render-cache.js'
|
|
6
|
+
import useTimeout from '../../composables/use-timeout/use-timeout.js'
|
|
6
7
|
|
|
7
8
|
import { hSlot } from '../../utils/private.render/render.js'
|
|
8
9
|
import { getNormalizedVNodes } from '../../utils/private.vm/vm.js'
|
|
@@ -49,6 +50,7 @@ export const usePanelEmits = [ 'update:modelValue', 'beforeTransition', 'transit
|
|
|
49
50
|
export default function () {
|
|
50
51
|
const { props, emit, proxy } = getCurrentInstance()
|
|
51
52
|
const { getCache } = useRenderCache()
|
|
53
|
+
const { registerTimeout } = useTimeout()
|
|
52
54
|
|
|
53
55
|
let panels, forcedPanelTransition
|
|
54
56
|
|
|
@@ -117,9 +119,9 @@ export default function () {
|
|
|
117
119
|
if (panelIndex.value !== index) {
|
|
118
120
|
panelIndex.value = index
|
|
119
121
|
emit('beforeTransition', newVal, oldVal)
|
|
120
|
-
|
|
122
|
+
registerTimeout(() => {
|
|
121
123
|
emit('transition', newVal, oldVal)
|
|
122
|
-
})
|
|
124
|
+
}, props.transitionDuration)
|
|
123
125
|
}
|
|
124
126
|
})
|
|
125
127
|
|
package/src/css/variables.sass
CHANGED
|
@@ -704,6 +704,7 @@ $menu-background : #fff !default
|
|
|
704
704
|
$menu-box-shadow : $shadow-2 !default
|
|
705
705
|
$menu-box-shadow-dark : $dark-shadow-2 !default
|
|
706
706
|
$menu-max-width : 95vw !default
|
|
707
|
+
$menu-max-height : 65vh !default
|
|
707
708
|
|
|
708
709
|
$rating-grade-color : $yellow !default
|
|
709
710
|
$rating-shadow : 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24) !default
|
|
@@ -715,6 +716,8 @@ $tooltip-border-radius : $generic-border-radius !default
|
|
|
715
716
|
$tooltip-fontsize : 10px !default
|
|
716
717
|
$tooltip-mobile-padding : 8px 16px !default
|
|
717
718
|
$tooltip-mobile-fontsize : 14px !default
|
|
719
|
+
$tooltip-max-width : 95vw !default
|
|
720
|
+
$tooltip-max-height : 65vh !default
|
|
718
721
|
|
|
719
722
|
$uploader-title-font-size : 14px !default
|
|
720
723
|
$uploader-title-line-height : 1.285714 !default
|