quasar 2.16.11 → 2.17.1
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 +758 -2145
- package/dist/quasar.css +6 -5
- package/dist/quasar.prod.css +1 -1
- package/dist/quasar.rtl.css +6 -5
- package/dist/quasar.rtl.prod.css +1 -1
- package/dist/quasar.sass +67 -63
- package/dist/quasar.server.prod.cjs +49 -49
- package/dist/quasar.server.prod.js +47 -47
- package/dist/quasar.umd.js +348 -1738
- package/dist/quasar.umd.prod.js +48 -48
- package/dist/types/api/slider.d.ts +2 -1
- package/dist/types/extras/icon-set.d.ts +11 -6
- package/dist/types/index.d.ts +272 -203
- package/dist/types/plugin.d.ts +7 -7
- 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/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/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/spinner/QSpinnerAudio.js +4 -70
- package/src/components/spinner/QSpinnerBall.js +4 -86
- package/src/components/spinner/QSpinnerBars.js +4 -125
- package/src/components/spinner/QSpinnerBox.js +4 -43
- package/src/components/spinner/QSpinnerClock.js +4 -54
- package/src/components/spinner/QSpinnerComment.js +4 -66
- package/src/components/spinner/QSpinnerCube.js +4 -114
- package/src/components/spinner/QSpinnerDots.js +4 -86
- package/src/components/spinner/QSpinnerFacebook.js +4 -85
- package/src/components/spinner/QSpinnerGears.js +4 -41
- package/src/components/spinner/QSpinnerGrid.js +4 -134
- package/src/components/spinner/QSpinnerHearts.js +4 -36
- package/src/components/spinner/QSpinnerHourglass.js +4 -94
- package/src/components/spinner/QSpinnerInfinity.js +4 -25
- package/src/components/spinner/QSpinnerIos.js +4 -156
- package/src/components/spinner/QSpinnerOrbit.js +4 -33
- package/src/components/spinner/QSpinnerOval.js +4 -32
- package/src/components/spinner/QSpinnerPie.js +4 -63
- package/src/components/spinner/QSpinnerPuff.js +4 -65
- package/src/components/spinner/QSpinnerRadio.js +4 -58
- package/src/components/spinner/QSpinnerRings.js +4 -88
- package/src/components/spinner/QSpinnerTail.js +4 -66
- package/src/components/tabs/QRouteTab.js +4 -3
- package/src/components/tabs/QTabs.js +28 -15
- package/src/components/time/QTime.sass +5 -5
- 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-key-composition/use-key-composition.js +19 -2
- package/src/composables/private.use-panel/use-panel.js +5 -3
- package/src/css/core/elevation.sass +6 -4
- package/src/css/core/flex.sass +5 -6
- package/src/css/core/size.sass +20 -18
- package/src/css/core/typography.sass +11 -9
- package/src/css/core/visibility.sass +2 -2
- package/src/css/flex-addon.sass +22 -20
- package/src/css/helpers/math.sass +1 -1
- package/src/css/helpers/string.sass +7 -4
- package/src/css/variables.sass +14 -9
- 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.config/nodes.js +1 -3
- package/src/utils/private.position-engine/position-engine.js +11 -4
|
@@ -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,15 +12,14 @@ export default createComponent({
|
|
|
72
12
|
|
|
73
13
|
setup (props) {
|
|
74
14
|
const { cSize, classes } = useSpinner(props)
|
|
75
|
-
const svg = createSvg()
|
|
76
|
-
|
|
77
15
|
return () => h('svg', {
|
|
78
16
|
class: classes.value,
|
|
79
17
|
stroke: 'currentColor',
|
|
80
18
|
width: cSize.value,
|
|
81
19
|
height: cSize.value,
|
|
82
20
|
viewBox: '0 0 44 44',
|
|
83
|
-
xmlns: 'http://www.w3.org/2000/svg'
|
|
84
|
-
|
|
21
|
+
xmlns: 'http://www.w3.org/2000/svg',
|
|
22
|
+
innerHTML
|
|
23
|
+
})
|
|
85
24
|
}
|
|
86
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,15 +12,14 @@ export default createComponent({
|
|
|
65
12
|
|
|
66
13
|
setup (props) {
|
|
67
14
|
const { cSize, classes } = useSpinner(props)
|
|
68
|
-
const svg = createSvg()
|
|
69
|
-
|
|
70
15
|
return () => h('svg', {
|
|
71
16
|
class: classes.value,
|
|
72
17
|
width: cSize.value,
|
|
73
18
|
height: cSize.value,
|
|
74
19
|
viewBox: '0 0 100 100',
|
|
75
20
|
preserveAspectRatio: 'xMidYMid',
|
|
76
|
-
xmlns: 'http://www.w3.org/2000/svg'
|
|
77
|
-
|
|
21
|
+
xmlns: 'http://www.w3.org/2000/svg',
|
|
22
|
+
innerHTML
|
|
23
|
+
})
|
|
78
24
|
}
|
|
79
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,15 +12,14 @@ export default createComponent({
|
|
|
95
12
|
|
|
96
13
|
setup (props) {
|
|
97
14
|
const { cSize, classes } = useSpinner(props)
|
|
98
|
-
const svg = createSvg()
|
|
99
|
-
|
|
100
15
|
return () => h('svg', {
|
|
101
16
|
class: classes.value,
|
|
102
17
|
stroke: 'currentColor',
|
|
103
18
|
width: cSize.value,
|
|
104
19
|
height: cSize.value,
|
|
105
20
|
viewBox: '0 0 45 45',
|
|
106
|
-
xmlns: 'http://www.w3.org/2000/svg'
|
|
107
|
-
|
|
21
|
+
xmlns: 'http://www.w3.org/2000/svg',
|
|
22
|
+
innerHTML
|
|
23
|
+
})
|
|
108
24
|
}
|
|
109
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,14 +12,13 @@ export default createComponent({
|
|
|
73
12
|
|
|
74
13
|
setup (props) {
|
|
75
14
|
const { cSize, classes } = useSpinner(props)
|
|
76
|
-
const svg = createSvg()
|
|
77
|
-
|
|
78
15
|
return () => h('svg', {
|
|
79
16
|
class: classes.value,
|
|
80
17
|
width: cSize.value,
|
|
81
18
|
height: cSize.value,
|
|
82
19
|
viewBox: '0 0 38 38',
|
|
83
|
-
xmlns: 'http://www.w3.org/2000/svg'
|
|
84
|
-
|
|
20
|
+
xmlns: 'http://www.w3.org/2000/svg',
|
|
21
|
+
innerHTML
|
|
22
|
+
})
|
|
85
23
|
}
|
|
86
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
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
@
|
|
1
|
+
@use 'sass:math'
|
|
2
2
|
|
|
3
3
|
.q-time
|
|
4
4
|
box-shadow: $shadow-2
|
|
@@ -129,8 +129,8 @@
|
|
|
129
129
|
$left: (1 + cos($angle))
|
|
130
130
|
|
|
131
131
|
&__clock-pos-#{$pos}
|
|
132
|
-
top: toFixed(percentage($top * 0.5), 100)
|
|
133
|
-
left: toFixed(percentage($left * 0.5), 100) #{"/* rtl:ignore */"}
|
|
132
|
+
top: toFixed(math.percentage($top * 0.5), 100)
|
|
133
|
+
left: toFixed(math.percentage($left * 0.5), 100) #{"/* rtl:ignore */"}
|
|
134
134
|
|
|
135
135
|
@for $pos from 12 through 23
|
|
136
136
|
$angle: (270 + 30 * $pos)
|
|
@@ -138,8 +138,8 @@
|
|
|
138
138
|
$left: (1 + cos($angle))
|
|
139
139
|
|
|
140
140
|
&__clock-pos-#{$pos}
|
|
141
|
-
top: toFixed(percentage(.15 + $top * .35), 100)
|
|
142
|
-
left: toFixed(percentage(.15 + $left * .35), 100) #{"/* rtl:ignore */"}
|
|
141
|
+
top: toFixed(math.percentage(.15 + $top * .35), 100)
|
|
142
|
+
left: toFixed(math.percentage(.15 + $left * .35), 100) #{"/* rtl:ignore */"}
|
|
143
143
|
|
|
144
144
|
&__now-button
|
|
145
145
|
background-color: var(--q-primary)
|
|
@@ -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,3 +1,10 @@
|
|
|
1
|
+
import { client } from '../../plugins/platform/Platform.js'
|
|
2
|
+
|
|
3
|
+
const isJapanese = /[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\uff00-\uff9f\u4e00-\u9faf\u3400-\u4dbf]/
|
|
4
|
+
const isChinese = /[\u4e00-\u9fff\u3400-\u4dbf\u{20000}-\u{2a6df}\u{2a700}-\u{2b73f}\u{2b740}-\u{2b81f}\u{2b820}-\u{2ceaf}\uf900-\ufaff\u3300-\u33ff\ufe30-\ufe4f\uf900-\ufaff\u{2f800}-\u{2fa1f}]/u
|
|
5
|
+
const isKorean = /[\u3131-\u314e\u314f-\u3163\uac00-\ud7a3]/
|
|
6
|
+
const isPlainText = /[a-z0-9_ -]$/i
|
|
7
|
+
|
|
1
8
|
export default function (onInput) {
|
|
2
9
|
return function onComposition (e) {
|
|
3
10
|
if (e.type === 'compositionend' || e.type === 'change') {
|
|
@@ -5,8 +12,18 @@ export default function (onInput) {
|
|
|
5
12
|
e.target.qComposing = false
|
|
6
13
|
onInput(e)
|
|
7
14
|
}
|
|
8
|
-
else if (
|
|
9
|
-
e.
|
|
15
|
+
else if (
|
|
16
|
+
e.type === 'compositionupdate'
|
|
17
|
+
&& e.target.qComposing !== true
|
|
18
|
+
&& typeof e.data === 'string'
|
|
19
|
+
) {
|
|
20
|
+
const isComposing = client.is.firefox === true
|
|
21
|
+
? isPlainText.test(e.data) === false
|
|
22
|
+
: isJapanese.test(e.data) === true || isChinese.test(e.data) === true || isKorean.test(e.data) === true
|
|
23
|
+
|
|
24
|
+
if (isComposing === true) {
|
|
25
|
+
e.target.qComposing = true
|
|
26
|
+
}
|
|
10
27
|
}
|
|
11
28
|
}
|
|
12
29
|
}
|
|
@@ -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
|
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
+
@use 'sass:list'
|
|
2
|
+
|
|
1
3
|
.shadow-transition
|
|
2
4
|
transition: $shadow-transition !important
|
|
3
5
|
|
|
4
6
|
@for $z from 1 through 24
|
|
5
7
|
.shadow-#{$z}
|
|
6
|
-
box-shadow: nth($shadows, $z)
|
|
8
|
+
box-shadow: list.nth($shadows, $z)
|
|
7
9
|
.shadow-up-#{$z}
|
|
8
|
-
box-shadow: nth($shadows-up, $z)
|
|
10
|
+
box-shadow: list.nth($shadows-up, $z)
|
|
9
11
|
|
|
10
12
|
.inset-shadow
|
|
11
13
|
box-shadow: $inset-shadow
|
|
@@ -15,9 +17,9 @@
|
|
|
15
17
|
body.body--dark
|
|
16
18
|
@for $z from 1 through 24
|
|
17
19
|
.shadow-#{$z}
|
|
18
|
-
box-shadow: nth($dark-shadows, $z)
|
|
20
|
+
box-shadow: list.nth($dark-shadows, $z)
|
|
19
21
|
.shadow-up-#{$z}
|
|
20
|
-
box-shadow: nth($dark-shadows-up, $z)
|
|
22
|
+
box-shadow: list.nth($dark-shadows-up, $z)
|
|
21
23
|
|
|
22
24
|
.inset-shadow
|
|
23
25
|
box-shadow: $inset-dark-shadow
|