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.
Files changed (184) hide show
  1. package/dist/api/Platform.json +1 -1
  2. package/dist/api/QOptionGroup.json +1 -1
  3. package/dist/api/QScrollArea.json +1 -1
  4. package/dist/api/QSelect.json +1 -1
  5. package/dist/api/QUploader.json +1 -1
  6. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  7. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  8. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  9. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  10. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  11. package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
  12. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  13. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  14. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  15. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  16. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  17. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  18. package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
  19. package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
  20. package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
  21. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  22. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  23. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  24. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  25. package/dist/icon-set/mdi-v7.umd.prod.js +1 -1
  26. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  34. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  35. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  36. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  37. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  38. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +1 -1
  39. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
  40. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
  41. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  42. package/dist/icon-set/svg-mdi-v7.umd.prod.js +1 -1
  43. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  44. package/dist/icon-set/themify.umd.prod.js +1 -1
  45. package/dist/lang/ar-TN.umd.prod.js +1 -1
  46. package/dist/lang/ar.umd.prod.js +1 -1
  47. package/dist/lang/az-Latn.umd.prod.js +1 -1
  48. package/dist/lang/bg.umd.prod.js +1 -1
  49. package/dist/lang/bn.umd.prod.js +1 -1
  50. package/dist/lang/bs-BA.umd.prod.js +1 -1
  51. package/dist/lang/ca.umd.prod.js +1 -1
  52. package/dist/lang/cs.umd.prod.js +1 -1
  53. package/dist/lang/da.umd.prod.js +1 -1
  54. package/dist/lang/de-CH.umd.prod.js +1 -1
  55. package/dist/lang/de-DE.umd.prod.js +1 -1
  56. package/dist/lang/de.umd.prod.js +1 -1
  57. package/dist/lang/el.umd.prod.js +1 -1
  58. package/dist/lang/en-GB.umd.prod.js +1 -1
  59. package/dist/lang/en-US.umd.prod.js +1 -1
  60. package/dist/lang/eo.umd.prod.js +1 -1
  61. package/dist/lang/es.umd.prod.js +1 -1
  62. package/dist/lang/et.umd.prod.js +1 -1
  63. package/dist/lang/eu.umd.prod.js +1 -1
  64. package/dist/lang/fa-IR.umd.prod.js +1 -1
  65. package/dist/lang/fa.umd.prod.js +1 -1
  66. package/dist/lang/fi.umd.prod.js +1 -1
  67. package/dist/lang/fr.umd.prod.js +1 -1
  68. package/dist/lang/gn.umd.prod.js +1 -1
  69. package/dist/lang/he.umd.prod.js +1 -1
  70. package/dist/lang/hi.umd.prod.js +1 -1
  71. package/dist/lang/hr.umd.prod.js +1 -1
  72. package/dist/lang/hu.umd.prod.js +1 -1
  73. package/dist/lang/id.umd.prod.js +1 -1
  74. package/dist/lang/is.umd.prod.js +1 -1
  75. package/dist/lang/it.umd.prod.js +1 -1
  76. package/dist/lang/ja.umd.prod.js +1 -1
  77. package/dist/lang/kk.umd.prod.js +1 -1
  78. package/dist/lang/km.umd.prod.js +1 -1
  79. package/dist/lang/ko-KR.umd.prod.js +1 -1
  80. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  81. package/dist/lang/lt.umd.prod.js +1 -1
  82. package/dist/lang/lu.umd.prod.js +1 -1
  83. package/dist/lang/lv.umd.prod.js +1 -1
  84. package/dist/lang/mk.umd.prod.js +1 -1
  85. package/dist/lang/ml.umd.prod.js +1 -1
  86. package/dist/lang/mm.umd.prod.js +1 -1
  87. package/dist/lang/ms-MY.umd.prod.js +1 -1
  88. package/dist/lang/ms.umd.prod.js +1 -1
  89. package/dist/lang/my.umd.prod.js +1 -1
  90. package/dist/lang/nb-NO.umd.prod.js +1 -1
  91. package/dist/lang/nl.umd.prod.js +1 -1
  92. package/dist/lang/pl.umd.prod.js +1 -1
  93. package/dist/lang/pt-BR.umd.prod.js +1 -1
  94. package/dist/lang/pt.umd.prod.js +1 -1
  95. package/dist/lang/ro.umd.prod.js +1 -1
  96. package/dist/lang/ru.umd.prod.js +1 -1
  97. package/dist/lang/sk.umd.prod.js +1 -1
  98. package/dist/lang/sl.umd.prod.js +1 -1
  99. package/dist/lang/sm.umd.prod.js +1 -1
  100. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  101. package/dist/lang/sr.umd.prod.js +1 -1
  102. package/dist/lang/sv.umd.prod.js +1 -1
  103. package/dist/lang/ta.umd.prod.js +1 -1
  104. package/dist/lang/th.umd.prod.js +1 -1
  105. package/dist/lang/tl.umd.prod.js +1 -1
  106. package/dist/lang/tr.umd.prod.js +1 -1
  107. package/dist/lang/ug.umd.prod.js +1 -1
  108. package/dist/lang/uk.umd.prod.js +1 -1
  109. package/dist/lang/uz-Cyrl.umd.prod.js +1 -1
  110. package/dist/lang/uz-Latn.umd.prod.js +1 -1
  111. package/dist/lang/vi.umd.prod.js +1 -1
  112. package/dist/lang/zh-CN.umd.prod.js +1 -1
  113. package/dist/lang/zh-TW.umd.prod.js +1 -1
  114. package/dist/quasar.client.js +758 -2145
  115. package/dist/quasar.css +6 -5
  116. package/dist/quasar.prod.css +1 -1
  117. package/dist/quasar.rtl.css +6 -5
  118. package/dist/quasar.rtl.prod.css +1 -1
  119. package/dist/quasar.sass +67 -63
  120. package/dist/quasar.server.prod.cjs +49 -49
  121. package/dist/quasar.server.prod.js +47 -47
  122. package/dist/quasar.umd.js +348 -1738
  123. package/dist/quasar.umd.prod.js +48 -48
  124. package/dist/types/api/slider.d.ts +2 -1
  125. package/dist/types/extras/icon-set.d.ts +11 -6
  126. package/dist/types/index.d.ts +272 -203
  127. package/dist/types/plugin.d.ts +7 -7
  128. package/dist/vetur/quasar-attributes.json +1 -1
  129. package/dist/vetur/quasar-tags.json +1 -1
  130. package/dist/web-types/web-types.json +1 -1
  131. package/package.json +9 -9
  132. package/src/components/menu/QMenu.sass +2 -2
  133. package/src/components/option-group/QOptionGroup.js +38 -15
  134. package/src/components/option-group/QOptionGroup.json +88 -1
  135. package/src/components/scroll-area/QScrollArea.js +115 -107
  136. package/src/components/scroll-area/QScrollArea.json +40 -0
  137. package/src/components/scroll-area/ScrollAreaControls.js +54 -0
  138. package/src/components/select/QSelect.js +16 -18
  139. package/src/components/select/QSelect.json +7 -0
  140. package/src/components/spinner/QSpinnerAudio.js +4 -70
  141. package/src/components/spinner/QSpinnerBall.js +4 -86
  142. package/src/components/spinner/QSpinnerBars.js +4 -125
  143. package/src/components/spinner/QSpinnerBox.js +4 -43
  144. package/src/components/spinner/QSpinnerClock.js +4 -54
  145. package/src/components/spinner/QSpinnerComment.js +4 -66
  146. package/src/components/spinner/QSpinnerCube.js +4 -114
  147. package/src/components/spinner/QSpinnerDots.js +4 -86
  148. package/src/components/spinner/QSpinnerFacebook.js +4 -85
  149. package/src/components/spinner/QSpinnerGears.js +4 -41
  150. package/src/components/spinner/QSpinnerGrid.js +4 -134
  151. package/src/components/spinner/QSpinnerHearts.js +4 -36
  152. package/src/components/spinner/QSpinnerHourglass.js +4 -94
  153. package/src/components/spinner/QSpinnerInfinity.js +4 -25
  154. package/src/components/spinner/QSpinnerIos.js +4 -156
  155. package/src/components/spinner/QSpinnerOrbit.js +4 -33
  156. package/src/components/spinner/QSpinnerOval.js +4 -32
  157. package/src/components/spinner/QSpinnerPie.js +4 -63
  158. package/src/components/spinner/QSpinnerPuff.js +4 -65
  159. package/src/components/spinner/QSpinnerRadio.js +4 -58
  160. package/src/components/spinner/QSpinnerRings.js +4 -88
  161. package/src/components/spinner/QSpinnerTail.js +4 -66
  162. package/src/components/tabs/QRouteTab.js +4 -3
  163. package/src/components/tabs/QTabs.js +28 -15
  164. package/src/components/time/QTime.sass +5 -5
  165. package/src/components/tooltip/QTooltip.sass +2 -0
  166. package/src/components/uploader/QUploader.json +9 -0
  167. package/src/components/uploader/QUploader.sass +0 -1
  168. package/src/components/uploader/uploader-core.js +6 -2
  169. package/src/composables/private.use-key-composition/use-key-composition.js +19 -2
  170. package/src/composables/private.use-panel/use-panel.js +5 -3
  171. package/src/css/core/elevation.sass +6 -4
  172. package/src/css/core/flex.sass +5 -6
  173. package/src/css/core/size.sass +20 -18
  174. package/src/css/core/typography.sass +11 -9
  175. package/src/css/core/visibility.sass +2 -2
  176. package/src/css/flex-addon.sass +22 -20
  177. package/src/css/helpers/math.sass +1 -1
  178. package/src/css/helpers/string.sass +7 -4
  179. package/src/css/variables.sass +14 -9
  180. package/src/plugins/platform/Platform.js +40 -5
  181. package/src/plugins/platform/Platform.json +52 -69
  182. package/src/plugins/platform/Platform.test.js +22 -14
  183. package/src/utils/private.config/nodes.js +1 -3
  184. package/src/utils/private.position-engine/position-engine.js +11 -4
@@ -1,6 +1,5 @@
1
1
  @use 'sass:math'
2
-
3
- @import '../helpers/string.sass'
2
+ @use 'sass:string'
4
3
 
5
4
  @mixin fg($name, $size)
6
5
  $noProcNotZero: $size > 0
@@ -26,19 +25,19 @@
26
25
  flex: 0 1 auto
27
26
 
28
27
  @for $i from 0 through $flex-cols
29
- $ic: quote('' + $i)
28
+ $ic: string.quote('' + $i)
30
29
  #{str-fe('.col<name>-<i>', $name, $noProcNotZero, $ic)}
31
30
  @extend .col#{$name}-auto
32
31
  .row
33
32
  #{str-fe('> .col<name>-<i>', $name, $noProcNotZero, $ic)}
34
33
  height: auto
35
- width: toFixed(percentage(math.div($i, $flex-cols)), 10000)
34
+ width: toFixed(math.percentage(math.div($i, $flex-cols)), 10000)
36
35
  @if $i != 0 or $name != ''
37
36
  #{str-fe('> .offset<name>-<i>', $name, $noProcNotZero, $ic)}
38
- margin-left: toFixed(percentage(math.div($i, $flex-cols)), 10000)
37
+ margin-left: toFixed(math.percentage(math.div($i, $flex-cols)), 10000)
39
38
  .column
40
39
  #{str-fe('> .col<name>-<i>', $name, $noProcNotZero, $ic)}
41
- height: toFixed(percentage(math.div($i, $flex-cols)), 10000)
40
+ height: toFixed(math.percentage(math.div($i, $flex-cols)), 10000)
42
41
  width: auto
43
42
  @if $size == 0 and $i == $flex-cols
44
43
  .row > .col-all
@@ -1,3 +1,5 @@
1
+ @use 'sass:map'
2
+
1
3
  \:root
2
4
  @each $name, $size in $sizes
3
5
  #{"--q-size-"}#{$name}: #{$size}
@@ -29,38 +31,38 @@
29
31
  @each $space, $value in $spaces
30
32
 
31
33
  .q-pa-#{$space}
32
- padding: map-get($value, "y") map-get($value, "x")
34
+ padding: map.get($value, "y") map.get($value, "x")
33
35
  .q-pl-#{$space}
34
- padding-left: map-get($value, "x")
36
+ padding-left: map.get($value, "x")
35
37
  .q-pr-#{$space}
36
- padding-right: map-get($value, "x")
38
+ padding-right: map.get($value, "x")
37
39
  .q-pt-#{$space}
38
- padding-top: map-get($value, "y")
40
+ padding-top: map.get($value, "y")
39
41
  .q-pb-#{$space}
40
- padding-bottom: map-get($value, "y")
42
+ padding-bottom: map.get($value, "y")
41
43
  .q-px-#{$space}
42
- padding-left: map-get($value, "x")
43
- padding-right: map-get($value, "x")
44
+ padding-left: map.get($value, "x")
45
+ padding-right: map.get($value, "x")
44
46
  .q-py-#{$space}
45
- padding-top: map-get($value, "y")
46
- padding-bottom: map-get($value, "y")
47
+ padding-top: map.get($value, "y")
48
+ padding-bottom: map.get($value, "y")
47
49
 
48
50
  .q-ma-#{$space}
49
- margin: map-get($value, "y") map-get($value, "x")
51
+ margin: map.get($value, "y") map.get($value, "x")
50
52
  .q-ml-#{$space}
51
- margin-left: map-get($value, "x")
53
+ margin-left: map.get($value, "x")
52
54
  .q-mr-#{$space}
53
- margin-right: map-get($value, "x")
55
+ margin-right: map.get($value, "x")
54
56
  .q-mt-#{$space}
55
- margin-top: map-get($value, "y")
57
+ margin-top: map.get($value, "y")
56
58
  .q-mb-#{$space}
57
- margin-bottom: map-get($value, "y")
59
+ margin-bottom: map.get($value, "y")
58
60
  .q-mx-#{$space}
59
- margin-left: map-get($value, "x")
60
- margin-right: map-get($value, "x")
61
+ margin-left: map.get($value, "x")
62
+ margin-right: map.get($value, "x")
61
63
  .q-my-#{$space}
62
- margin-top: map-get($value, "y")
63
- margin-bottom: map-get($value, "y")
64
+ margin-top: map.get($value, "y")
65
+ margin-bottom: map.get($value, "y")
64
66
 
65
67
  .q-mt-auto, .q-my-auto
66
68
  margin-top: auto
@@ -1,3 +1,5 @@
1
+ @use 'sass:map'
2
+
1
3
  body
2
4
  min-width: 100px
3
5
  min-height: 100%
@@ -12,21 +14,21 @@ body
12
14
 
13
15
  @each $heading, $value in $h-tags
14
16
  #{$heading}
15
- font-size: map-get($value, "size")
16
- font-weight: map-get($value, "weight")
17
- line-height: map-get($value, "line-height")
18
- letter-spacing: map-get($value, "letter-spacing")
17
+ font-size: map.get($value, "size")
18
+ font-weight: map.get($value, "weight")
19
+ line-height: map.get($value, "line-height")
20
+ letter-spacing: map.get($value, "letter-spacing")
19
21
 
20
22
  p
21
- margin: 0 0 map-get(map-get($spaces, "md"), "y")
23
+ margin: 0 0 map.get(map.get($spaces, "md"), "y")
22
24
 
23
25
  .text-
24
26
  @each $heading, $value in $headings
25
27
  &#{$heading}
26
- font-size: map-get($value, "size")
27
- font-weight: map-get($value, "weight")
28
- line-height: map-get($value, "line-height")
29
- letter-spacing: map-get($value, "letter-spacing")
28
+ font-size: map.get($value, "size")
29
+ font-weight: map.get($value, "weight")
30
+ line-height: map.get($value, "line-height")
31
+ letter-spacing: map.get($value, "letter-spacing")
30
32
 
31
33
  &uppercase
32
34
  text-transform: uppercase
@@ -27,12 +27,12 @@
27
27
 
28
28
  .readonly
29
29
  cursor: default !important
30
- .disabled, [disabled]
30
+ .disabled, [disabled]:not([disabled=false])
31
31
  &,
32
32
  *
33
33
  outline: 0 !important
34
34
  cursor: not-allowed !important
35
- .disabled, [disabled]
35
+ .disabled, [disabled]:not([disabled=false])
36
36
  opacity: .6 !important
37
37
 
38
38
  .hidden
@@ -1,4 +1,6 @@
1
1
  @use 'sass:math'
2
+ @use 'sass:map'
3
+ @use 'sass:string'
2
4
 
3
5
  @import './helpers/string.sass'
4
6
  @import './helpers/math.sass'
@@ -18,38 +20,38 @@
18
20
 
19
21
  @each $space, $value in $spaces
20
22
  .q-pa#{$name}-#{$space}
21
- padding: map-get($value, "y") map-get($value, "x")
23
+ padding: map.get($value, "y") map.get($value, "x")
22
24
  .q-pl#{$name}-#{$space}
23
- padding-left: map-get($value, "x")
25
+ padding-left: map.get($value, "x")
24
26
  .q-pr#{$name}-#{$space}
25
- padding-right: map-get($value, "x")
27
+ padding-right: map.get($value, "x")
26
28
  .q-pt#{$name}-#{$space}
27
- padding-top: map-get($value, "y")
29
+ padding-top: map.get($value, "y")
28
30
  .q-pb#{$name}-#{$space}
29
- padding-bottom: map-get($value, "y")
31
+ padding-bottom: map.get($value, "y")
30
32
  .q-px#{$name}-#{$space}
31
- padding-left: map-get($value, "x")
32
- padding-right: map-get($value, "x")
33
+ padding-left: map.get($value, "x")
34
+ padding-right: map.get($value, "x")
33
35
  .q-py#{$name}-#{$space}
34
- padding-top: map-get($value, "y")
35
- padding-bottom: map-get($value, "y")
36
+ padding-top: map.get($value, "y")
37
+ padding-bottom: map.get($value, "y")
36
38
 
37
39
  .q-ma#{$name}-#{$space}
38
- margin: map-get($value, "y") map-get($value, "x")
40
+ margin: map.get($value, "y") map.get($value, "x")
39
41
  .q-ml#{$name}-#{$space}
40
- margin-left: map-get($value, "x")
42
+ margin-left: map.get($value, "x")
41
43
  .q-mr#{$name}-#{$space}
42
- margin-right: map-get($value, "x")
44
+ margin-right: map.get($value, "x")
43
45
  .q-mt#{$name}-#{$space}
44
- margin-top: map-get($value, "y")
46
+ margin-top: map.get($value, "y")
45
47
  .q-mb#{$name}-#{$space}
46
- margin-bottom: map-get($value, "y")
48
+ margin-bottom: map.get($value, "y")
47
49
  .q-mx#{$name}-#{$space}
48
- margin-left: map-get($value, "x")
49
- margin-right: map-get($value, "x")
50
+ margin-left: map.get($value, "x")
51
+ margin-right: map.get($value, "x")
50
52
  .q-my#{$name}-#{$space}
51
- margin-top: map-get($value, "y")
52
- margin-bottom: map-get($value, "y")
53
+ margin-top: map.get($value, "y")
54
+ margin-bottom: map.get($value, "y")
53
55
 
54
56
  .q-ml#{$name}-auto
55
57
  margin-left: auto
@@ -195,8 +197,8 @@
195
197
  $noProcNotZero2: ($size2 > 0)
196
198
 
197
199
  @for $i from 0 through $flex-cols
198
- $ic: quote('' + $i)
199
- $internal-size: toFixed(percentage(math.div($i, $flex-cols)), 10000)
200
+ $ic: string.quote('' + $i)
201
+ $internal-size: toFixed(math.percentage(math.div($i, $flex-cols)), 10000)
200
202
 
201
203
  #{str-fr('.row<name>', $name)}
202
204
  #{str-fe('> .col<name>-<i>', $name2c, $noProcNotZero2, $ic)}
@@ -23,7 +23,7 @@ $PI: 3.14159265359
23
23
  // toFixed(0.12345, 100) -> 0.12
24
24
  // toFixed(0.12345, 1000) -> 0.123
25
25
  @function toFixed($number, $power)
26
- @return math.div(round($number * $power), $power)
26
+ @return math.div(math.round($number * $power), $power)
27
27
 
28
28
  @function sin($angle)
29
29
  $sin: 0
@@ -1,9 +1,12 @@
1
+ @use 'sass:list'
2
+ @use 'sass:string'
3
+
1
4
  @function str-replace($string, $search, $replace: '')
2
- $index: str-index($string, $search)
5
+ $index: string.index($string, $search)
3
6
 
4
7
  @if $index
5
- $start: str-slice($string, 1, $index - 1)
6
- $end: str-replace(str-slice($string, $index + str-length($search)), $search, $replace)
8
+ $start: string.slice($string, 1, $index - 1)
9
+ $end: str-replace(string.slice($string, $index + string.length($search)), $search, $replace)
7
10
  @return $start + $replace + $end
8
11
 
9
12
  @return $string
@@ -14,4 +17,4 @@
14
17
  @function str-fe($selector, $name, $noProc, $i: '')
15
18
  @if $noProc
16
19
  @return str-fr($selector, $name, $i)
17
- @return join(str-fr($selector, '', $i), str-fr($selector, $name, $i), $separator: comma)
20
+ @return list.join(str-fr($selector, '', $i), str-fr($selector, $name, $i), $separator: comma)
@@ -1,3 +1,5 @@
1
+ @use 'sass:map'
2
+
1
3
  $space-base : 16px !default
2
4
  $space-x-base : $space-base !default
3
5
  $space-y-base : $space-base !default
@@ -39,18 +41,18 @@ $flex-gutter: ('none': 0, 'xs': $flex-gutter-xs, 'sm': $flex-gutter-sm, 'md': $f
39
41
  // sorry for long line; we need .sass and it doesn't support multi-line list
40
42
  $sizes: ('xs': 0, 'sm': ($breakpoint-xs + 1), 'md': ($breakpoint-sm + 1), 'lg': ($breakpoint-md + 1), 'xl': ($breakpoint-lg + 1)) !default
41
43
 
42
- $breakpoint-xs-max: (map-get($sizes, "sm") - 0.02) !default
44
+ $breakpoint-xs-max: (map.get($sizes, "sm") - 0.02) !default
43
45
 
44
- $breakpoint-sm-min: map-get($sizes, "sm") !default
45
- $breakpoint-sm-max: (map-get($sizes, "md") - 0.02) !default
46
+ $breakpoint-sm-min: map.get($sizes, "sm") !default
47
+ $breakpoint-sm-max: (map.get($sizes, "md") - 0.02) !default
46
48
 
47
- $breakpoint-md-min: map-get($sizes, "md") !default
48
- $breakpoint-md-max: (map-get($sizes, "lg") - 0.02) !default
49
+ $breakpoint-md-min: map.get($sizes, "md") !default
50
+ $breakpoint-md-max: (map.get($sizes, "lg") - 0.02) !default
49
51
 
50
- $breakpoint-lg-min: map-get($sizes, "lg") !default
51
- $breakpoint-lg-max: (map-get($sizes, "xl") - 0.02) !default
52
+ $breakpoint-lg-min: map.get($sizes, "lg") !default
53
+ $breakpoint-lg-max: (map.get($sizes, "xl") - 0.02) !default
52
54
 
53
- $breakpoint-xl-min: map-get($sizes, "xl") !default
55
+ $breakpoint-xl-min: map.get($sizes, "xl") !default
54
56
 
55
57
  $h1: (size: 6rem, line-height: 6rem, letter-spacing: -.01562em, weight: 300) !default
56
58
  $h2: (size: 3.75rem, line-height: 3.75rem, letter-spacing: -.00833em, weight: 300) !default
@@ -69,7 +71,7 @@ $caption: (size: .75rem, line-height: 1.25rem, letter-spacing: .03333em, w
69
71
  $headings: ('h1': $h1, 'h2': $h2, 'h3': $h3, 'h4': $h4, 'h5': $h5, 'h6': $h6, 'subtitle1': $subtitle1, 'subtitle2': $subtitle2, 'body1': $body1, 'body2': $body2, 'overline': $overline, 'caption': $caption) !default
70
72
 
71
73
  // sorry for long line; we need .sass and it doesn't support multi-line list
72
- $h-tags: (h1: map-get($headings, "h1"), h2: map-get($headings, "h2"), h3: map-get($headings, "h3"), h4: map-get($headings, "h4"), h5: map-get($headings, "h5"), h6: map-get($headings, "h6")) !default
74
+ $h-tags: (h1: map.get($headings, "h1"), h2: map.get($headings, "h2"), h3: map.get($headings, "h3"), h4: map.get($headings, "h4"), h5: map.get($headings, "h5"), h6: map.get($headings, "h6")) !default
73
75
 
74
76
  // sorry for long line; we need .sass and it doesn't support multi-line list
75
77
  $text-weights: (thin: 100, light: 300, regular: 400, medium: 500, bold: 700, bolder: 900) !default
@@ -704,6 +706,7 @@ $menu-background : #fff !default
704
706
  $menu-box-shadow : $shadow-2 !default
705
707
  $menu-box-shadow-dark : $dark-shadow-2 !default
706
708
  $menu-max-width : 95vw !default
709
+ $menu-max-height : 65vh !default
707
710
 
708
711
  $rating-grade-color : $yellow !default
709
712
  $rating-shadow : 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24) !default
@@ -715,6 +718,8 @@ $tooltip-border-radius : $generic-border-radius !default
715
718
  $tooltip-fontsize : 10px !default
716
719
  $tooltip-mobile-padding : 8px 16px !default
717
720
  $tooltip-mobile-fontsize : 14px !default
721
+ $tooltip-max-width : 95vw !default
722
+ $tooltip-max-height : 65vh !default
718
723
 
719
724
  $uploader-title-font-size : 14px !default
720
725
  $uploader-title-line-height : 1.285714 !default
@@ -65,11 +65,46 @@ const hasTouch = __QUASAR_SSR_SERVER__
65
65
  : 'ontouchstart' in window || window.navigator.maxTouchPoints > 0
66
66
 
67
67
  function getPlatform (UA) {
68
- const
69
- userAgent = UA.toLowerCase(),
70
- platformMatch = getPlatformMatch(userAgent),
71
- matched = getMatch(userAgent, platformMatch),
72
- browser = {}
68
+ const userAgent = UA.toLowerCase()
69
+ const platformMatch = getPlatformMatch(userAgent)
70
+ const matched = getMatch(userAgent, platformMatch)
71
+ const browser = {
72
+ mobile: false,
73
+ desktop: false,
74
+
75
+ cordova: false,
76
+ capacitor: false,
77
+ nativeMobile: false,
78
+ // nativeMobileWrapper: void 0,
79
+ electron: false,
80
+ bex: false,
81
+
82
+ linux: false,
83
+ mac: false,
84
+ win: false,
85
+ cros: false,
86
+
87
+ chrome: false,
88
+ firefox: false,
89
+ opera: false,
90
+ safari: false,
91
+ vivaldi: false,
92
+ edge: false,
93
+ edgeChromium: false,
94
+ ie: false,
95
+ webkit: false,
96
+
97
+ android: false,
98
+ ios: false,
99
+ ipad: false,
100
+ iphone: false,
101
+ ipod: false,
102
+ kindle: false,
103
+ winphone: false,
104
+ blackberry: false,
105
+ playbook: false,
106
+ silk: false
107
+ }
73
108
 
74
109
  if (matched.browser) {
75
110
  browser[ matched.browser ] = true
@@ -38,39 +38,25 @@
38
38
  "desc": "Major browser version as a number"
39
39
  },
40
40
 
41
- "desktop": {
42
- "type": "Boolean",
43
- "required": false,
44
- "desc": "Whether the platform is desktop"
45
- },
46
41
  "mobile": {
47
42
  "type": "Boolean",
48
- "required": false,
49
43
  "desc": "Whether the platform is mobile"
50
44
  },
51
- "electron": {
45
+ "desktop": {
52
46
  "type": "Boolean",
53
- "required": false,
54
- "desc": "Whether the platform is Electron"
47
+ "desc": "Whether the platform is desktop"
55
48
  },
56
- "bex": {
49
+
50
+ "cordova": {
57
51
  "type": "Boolean",
58
- "required": false,
59
- "desc": "Whether the platform is BEX(Browser Extension)"
52
+ "desc": "Whether the platform is Cordova"
60
53
  },
61
54
  "capacitor": {
62
55
  "type": "Boolean",
63
- "required": false,
64
56
  "desc": "Whether the platform is Capacitor"
65
57
  },
66
- "cordova": {
67
- "type": "Boolean",
68
- "required": false,
69
- "desc": "Whether the platform is Cordova"
70
- },
71
58
  "nativeMobile": {
72
59
  "type": "Boolean",
73
- "required": false,
74
60
  "desc": "Whether the platform is a native mobile wrapper"
75
61
  },
76
62
  "nativeMobileWrapper": {
@@ -79,110 +65,107 @@
79
65
  "values": [ "'cordova'", "'capacitor'" ],
80
66
  "desc": "Type of the native mobile wrapper"
81
67
  },
82
-
83
- "webkit": {
68
+ "electron": {
84
69
  "type": "Boolean",
85
- "required": false,
86
- "desc": "Whether the browser is a Webkit one"
70
+ "desc": "Whether the platform is Electron"
71
+ },
72
+ "bex": {
73
+ "type": "Boolean",
74
+ "desc": "Whether the platform is BEX(Browser Extension)"
87
75
  },
88
76
 
89
- "chrome": {
77
+ "linux": {
90
78
  "type": "Boolean",
91
- "required": false,
92
- "desc": "Whether the browser is Google Chrome"
79
+ "desc": "Whether the operating system is Linux"
93
80
  },
94
- "firefox": {
81
+ "mac": {
95
82
  "type": "Boolean",
96
- "required": false,
97
- "desc": "Whether the browser is Firefox"
83
+ "desc": "Whether the operating system is Mac OS"
98
84
  },
99
- "safari": {
85
+ "win": {
100
86
  "type": "Boolean",
101
- "required": false,
102
- "desc": "Whether the browser is Safari"
87
+ "desc": "Whether the operating system is Windows"
103
88
  },
104
- "edgeChromium": {
89
+ "cros": {
105
90
  "type": "Boolean",
106
- "required": false,
107
- "desc": "Whether the browser is Microsoft Edge (Chromium)"
91
+ "desc": "Whether the operating system is Chrome OS"
108
92
  },
109
- "edge": {
93
+
94
+ "chrome": {
110
95
  "type": "Boolean",
111
- "required": false,
112
- "desc": "Whether the browser is Microsoft Edge Legacy"
96
+ "desc": "Whether the browser is Google Chrome"
97
+ },
98
+ "firefox": {
99
+ "type": "Boolean",
100
+ "desc": "Whether the browser is Firefox"
113
101
  },
114
102
  "opera": {
115
103
  "type": "Boolean",
116
- "required": false,
117
104
  "desc": "Whether the browser is Opera"
118
105
  },
106
+ "safari": {
107
+ "type": "Boolean",
108
+ "desc": "Whether the browser is Safari"
109
+ },
119
110
  "vivaldi": {
120
111
  "type": "Boolean",
121
- "required": false,
122
112
  "desc": "Whether the browser is Vivaldi"
123
113
  },
124
-
125
- "win": {
114
+ "edge": {
126
115
  "type": "Boolean",
127
- "required": false,
128
- "desc": "Whether the operating system is Windows"
116
+ "desc": "Whether the browser is Microsoft Edge Legacy"
129
117
  },
130
- "linux": {
118
+ "edgeChromium": {
131
119
  "type": "Boolean",
132
- "required": false,
133
- "desc": "Whether the operating system is Linux"
120
+ "desc": "Whether the browser is Microsoft Edge (Chromium)"
134
121
  },
135
- "mac": {
122
+ "ie": {
136
123
  "type": "Boolean",
137
- "required": false,
138
- "desc": "Whether the operating system is Mac OS"
124
+ "desc": "Whether the browser is Internet Explorer"
139
125
  },
140
- "cros": {
126
+ "webkit": {
141
127
  "type": "Boolean",
142
- "required": false,
143
- "desc": "Whether the operating system is Chrome OS"
128
+ "desc": "Whether the browser is a Webkit or Webkit-based one"
144
129
  },
145
130
 
146
131
  "android": {
147
132
  "type": "Boolean",
148
- "required": false,
149
133
  "desc": "Whether the operating system is Android"
150
134
  },
151
135
  "ios": {
152
136
  "type": "Boolean",
153
- "required": false,
154
137
  "desc": "Whether the operating system is iOS"
155
138
  },
156
- "winphone": {
139
+ "ipad": {
157
140
  "type": "Boolean",
158
- "required": false,
159
- "desc": "Whether the operating system is Windows Phone"
141
+ "desc": "Whether the device is an iPad"
160
142
  },
161
-
162
143
  "iphone": {
163
144
  "type": "Boolean",
164
- "required": false,
165
145
  "desc": "Whether the device is an iPhone"
166
146
  },
167
- "ipad": {
168
- "type": "Boolean",
169
- "required": false,
170
- "desc": "Whether the device is an iPad"
171
- },
172
147
  "ipod": {
173
148
  "type": "Boolean",
174
- "required": false,
175
149
  "desc": "Whether the device is an iPod"
176
150
  },
177
-
178
151
  "kindle": {
179
152
  "type": "Boolean",
180
- "required": false,
181
153
  "desc": "Whether the device is a Kindle"
182
154
  },
155
+ "winphone": {
156
+ "type": "Boolean",
157
+ "desc": "Whether the operating system is Windows Phone"
158
+ },
159
+ "blackberry": {
160
+ "type": "Boolean",
161
+ "desc": "Whether the device is a Blackberry"
162
+ },
163
+ "playbook": {
164
+ "type": "Boolean",
165
+ "desc": "Whether the device is a Blackberry Playbook"
166
+ },
183
167
  "silk": {
184
168
  "type": "Boolean",
185
- "required": false,
186
169
  "desc": "Whether the browser is Amazon Silk"
187
170
  }
188
171
  },
@@ -35,36 +35,44 @@ describe('[Platform API]', () => {
35
35
  platform: expect.any(String),
36
36
  version: expect.any(String),
37
37
  versionNumber: expect.any(Number),
38
- desktop: expect.any(Boolean),
38
+
39
39
  mobile: expect.any(Boolean),
40
- electron: expect.any(Boolean),
41
- bex: expect.any(Boolean),
42
- capacitor: expect.any(Boolean),
40
+ desktop: expect.any(Boolean),
41
+
43
42
  cordova: expect.any(Boolean),
43
+ capacitor: expect.any(Boolean),
44
44
  nativeMobile: expect.any(Boolean),
45
45
  nativeMobileWrapper: expect.$any([
46
46
  'cordova',
47
47
  'capacitor'
48
48
  ]),
49
- webkit: expect.any(Boolean),
49
+ electron: expect.any(Boolean),
50
+ bex: expect.any(Boolean),
51
+
52
+ linux: expect.any(Boolean),
53
+ mac: expect.any(Boolean),
54
+ win: expect.any(Boolean),
55
+ cros: expect.any(Boolean),
56
+
50
57
  chrome: expect.any(Boolean),
51
58
  firefox: expect.any(Boolean),
52
- safari: expect.any(Boolean),
53
- edgeChromium: expect.any(Boolean),
54
- edge: expect.any(Boolean),
55
59
  opera: expect.any(Boolean),
60
+ safari: expect.any(Boolean),
56
61
  vivaldi: expect.any(Boolean),
57
- win: expect.any(Boolean),
58
- linux: expect.any(Boolean),
59
- mac: expect.any(Boolean),
60
- cros: expect.any(Boolean),
62
+ edge: expect.any(Boolean),
63
+ edgeChromium: expect.any(Boolean),
64
+ ie: expect.any(Boolean),
65
+ webkit: expect.any(Boolean),
66
+
61
67
  android: expect.any(Boolean),
62
68
  ios: expect.any(Boolean),
63
- winphone: expect.any(Boolean),
64
- iphone: expect.any(Boolean),
65
69
  ipad: expect.any(Boolean),
70
+ iphone: expect.any(Boolean),
66
71
  ipod: expect.any(Boolean),
67
72
  kindle: expect.any(Boolean),
73
+ winphone: expect.any(Boolean),
74
+ blackberry: expect.any(Boolean),
75
+ playbook: expect.any(Boolean),
68
76
  silk: expect.any(Boolean)
69
77
  }
70
78
 
@@ -39,9 +39,7 @@ export function removeGlobalNode (el) {
39
39
  }
40
40
 
41
41
  export function changeGlobalNodesTarget (newTarget) {
42
- if (newTarget === target) {
43
- return
44
- }
42
+ if (newTarget === target) return
45
43
 
46
44
  target = newTarget
47
45