quasar 2.1.9 → 2.2.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.
Files changed (127) hide show
  1. package/dist/api/QCarousel.json +19 -5
  2. package/dist/api/QColor.json +6 -0
  3. package/dist/api/QInnerLoading.json +32 -0
  4. package/dist/api/QOptionGroup.json +22 -0
  5. package/dist/api/QSkeleton.json +14 -0
  6. package/dist/api/QStepper.json +16 -2
  7. package/dist/api/QTabPanels.json +16 -2
  8. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  9. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  10. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  11. package/dist/icon-set/fontawesome-v5.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/mdi-v3.umd.prod.js +1 -1
  19. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  20. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  21. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  22. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  23. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  24. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  25. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  26. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-mdi-v4.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-mdi-v5.umd.prod.js +1 -1
  34. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  35. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  36. package/dist/icon-set/themify.umd.prod.js +1 -1
  37. package/dist/lang/ar.umd.prod.js +1 -1
  38. package/dist/lang/az-Latn.umd.prod.js +1 -1
  39. package/dist/lang/bg.umd.prod.js +1 -1
  40. package/dist/lang/bn.umd.prod.js +1 -1
  41. package/dist/lang/ca.umd.prod.js +1 -1
  42. package/dist/lang/cs.umd.prod.js +1 -1
  43. package/dist/lang/da.umd.prod.js +1 -1
  44. package/dist/lang/de.umd.prod.js +1 -1
  45. package/dist/lang/el.umd.prod.js +1 -1
  46. package/dist/lang/en-GB.umd.prod.js +1 -1
  47. package/dist/lang/en-US.umd.prod.js +1 -1
  48. package/dist/lang/eo.umd.prod.js +1 -1
  49. package/dist/lang/es.umd.prod.js +1 -1
  50. package/dist/lang/et.umd.prod.js +1 -1
  51. package/dist/lang/fa-IR.umd.prod.js +1 -1
  52. package/dist/lang/fa.umd.prod.js +1 -1
  53. package/dist/lang/fi.umd.prod.js +1 -1
  54. package/dist/lang/fr.umd.prod.js +1 -1
  55. package/dist/lang/gn.umd.prod.js +1 -1
  56. package/dist/lang/he.umd.prod.js +1 -1
  57. package/dist/lang/hr.umd.prod.js +1 -1
  58. package/dist/lang/hu.umd.prod.js +1 -1
  59. package/dist/lang/id.umd.prod.js +1 -1
  60. package/dist/lang/is.umd.prod.js +1 -1
  61. package/dist/lang/it.umd.prod.js +1 -1
  62. package/dist/lang/ja.umd.prod.js +1 -1
  63. package/dist/lang/km.umd.prod.js +1 -1
  64. package/dist/lang/ko-KR.umd.prod.js +1 -1
  65. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  66. package/dist/lang/lt.umd.prod.js +6 -0
  67. package/dist/lang/lu.umd.prod.js +1 -1
  68. package/dist/lang/lv.umd.prod.js +1 -1
  69. package/dist/lang/ml.umd.prod.js +1 -1
  70. package/dist/lang/ms.umd.prod.js +1 -1
  71. package/dist/lang/nb-NO.umd.prod.js +1 -1
  72. package/dist/lang/nl.umd.prod.js +1 -1
  73. package/dist/lang/pl.umd.prod.js +1 -1
  74. package/dist/lang/pt-BR.umd.prod.js +1 -1
  75. package/dist/lang/pt.umd.prod.js +1 -1
  76. package/dist/lang/ro.umd.prod.js +1 -1
  77. package/dist/lang/ru.umd.prod.js +1 -1
  78. package/dist/lang/sk.umd.prod.js +1 -1
  79. package/dist/lang/sl.umd.prod.js +1 -1
  80. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  81. package/dist/lang/sr.umd.prod.js +1 -1
  82. package/dist/lang/sv.umd.prod.js +1 -1
  83. package/dist/lang/ta.umd.prod.js +1 -1
  84. package/dist/lang/th.umd.prod.js +1 -1
  85. package/dist/lang/tr.umd.prod.js +1 -1
  86. package/dist/lang/ug.umd.prod.js +2 -2
  87. package/dist/lang/uk.umd.prod.js +1 -1
  88. package/dist/lang/vi.umd.prod.js +1 -1
  89. package/dist/lang/zh-CN.umd.prod.js +1 -1
  90. package/dist/lang/zh-TW.umd.prod.js +1 -1
  91. package/dist/quasar.cjs.prod.js +2 -2
  92. package/dist/quasar.css +24 -17
  93. package/dist/quasar.esm.prod.js +2 -2
  94. package/dist/quasar.prod.css +1 -1
  95. package/dist/quasar.rtl.css +29 -22
  96. package/dist/quasar.rtl.prod.css +1 -1
  97. package/dist/quasar.sass +24 -16
  98. package/dist/quasar.umd.js +236 -143
  99. package/dist/quasar.umd.prod.js +2 -2
  100. package/dist/ssr-directives/Morph.js +1 -1
  101. package/dist/types/index.d.ts +57 -4
  102. package/dist/vetur/quasar-attributes.json +33 -1
  103. package/dist/vetur/quasar-tags.json +9 -1
  104. package/dist/web-types/web-types.json +93 -5
  105. package/lang/index.json +4 -0
  106. package/lang/lt.js +103 -0
  107. package/lang/ug.js +42 -42
  108. package/package.json +1 -1
  109. package/src/components/carousel/QCarousel.js +8 -1
  110. package/src/components/carousel/QCarousel.json +9 -1
  111. package/src/components/color/QColor.js +73 -61
  112. package/src/components/color/QColor.json +7 -0
  113. package/src/components/color/QColor.sass +5 -1
  114. package/src/components/dialog/QDialog.js +6 -0
  115. package/src/components/inner-loading/QInnerLoading.js +31 -7
  116. package/src/components/inner-loading/QInnerLoading.json +29 -0
  117. package/src/components/inner-loading/QInnerLoading.sass +4 -0
  118. package/src/components/option-group/QOptionGroup.js +29 -19
  119. package/src/components/option-group/QOptionGroup.json +26 -0
  120. package/src/components/rating/QRating.js +59 -39
  121. package/src/components/rating/QRating.sass +8 -6
  122. package/src/components/skeleton/QSkeleton.js +15 -5
  123. package/src/components/skeleton/QSkeleton.json +9 -0
  124. package/src/components/skeleton/QSkeleton.sass +7 -6
  125. package/src/composables/private/use-panel.js +13 -8
  126. package/src/composables/private/use-panel.json +11 -2
  127. package/src/css/core/transitions.sass +4 -4
package/dist/quasar.sass CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.1.9
2
+ * Quasar Framework v2.2.0
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1489,7 +1489,10 @@ body.desktop .q-chip--clickable:focus
1489
1489
  &--bordered
1490
1490
  border: 1px solid $separator-color
1491
1491
  &__header
1492
- height: 68px
1492
+ &-tabs
1493
+ height: 32px
1494
+ &-banner
1495
+ height: 36px
1493
1496
  input
1494
1497
  line-height: 24px
1495
1498
  border: 0
@@ -2675,6 +2678,8 @@ $field-transition-label-right-up: .324s cubic-bezier(.4,0,.2,1)
2675
2678
  background: $light-dimmed-background
2676
2679
  &--dark
2677
2680
  background: $dimmed-background
2681
+ &__label
2682
+ margin-top: 8px
2678
2683
  .q-textarea
2679
2684
  .q-field__control
2680
2685
  min-height: 56px
@@ -3185,6 +3190,11 @@ body.desktop
3185
3190
  .q-rating
3186
3191
  color: $rating-grade-color
3187
3192
  vertical-align: middle
3193
+ &__icon-container
3194
+ height: 1em
3195
+ outline: 0
3196
+ & + &
3197
+ margin-left: 2px
3188
3198
  &__icon
3189
3199
  color: currentColor
3190
3200
  text-shadow: $rating-shadow
@@ -3197,14 +3207,10 @@ body.desktop
3197
3207
  opacity: 1
3198
3208
  &--exselected
3199
3209
  opacity: .7
3200
- & + &
3201
- margin-left: 2px
3202
3210
  &--no-dimming .q-rating__icon
3203
3211
  opacity: 1
3204
- &--editable .q-icon
3212
+ &--editable .q-rating__icon-container
3205
3213
  cursor: pointer
3206
- &--non-editable span, .q-icon
3207
- outline: 0
3208
3214
  .q-responsive
3209
3215
  position: relative
3210
3216
  max-width: 100%
@@ -3326,6 +3332,7 @@ body.platform-ios
3326
3332
  margin-top: 8px
3327
3333
  margin-bottom: 8px
3328
3334
  .q-skeleton
3335
+ --q-skeleton-speed: 1500ms
3329
3336
  background: $separator-color
3330
3337
  border-radius: $generic-border-radius
3331
3338
  &--anim
@@ -3373,13 +3380,13 @@ body.platform-ios
3373
3380
  &--square
3374
3381
  border-radius: 0
3375
3382
  &--anim-fade
3376
- animation: q-skeleton--fade 1.5s linear .5s infinite
3383
+ animation: q-skeleton--fade var(--q-skeleton-speed) linear .5s infinite
3377
3384
  &--anim-pulse
3378
- animation: q-skeleton--pulse 1.5s ease-in-out .5s infinite
3385
+ animation: q-skeleton--pulse var(--q-skeleton-speed) ease-in-out .5s infinite
3379
3386
  &--anim-pulse-x
3380
- animation: q-skeleton--pulse-x 1.5s ease-in-out .5s infinite
3387
+ animation: q-skeleton--pulse-x var(--q-skeleton-speed) ease-in-out .5s infinite
3381
3388
  &--anim-pulse-y
3382
- animation: q-skeleton--pulse-y 1.5s ease-in-out .5s infinite
3389
+ animation: q-skeleton--pulse-y var(--q-skeleton-speed) ease-in-out .5s infinite
3383
3390
  &--anim-wave,
3384
3391
  &--anim-blink,
3385
3392
  &--anim-pop
@@ -3396,10 +3403,10 @@ body.platform-ios
3396
3403
  z-index: 0
3397
3404
  &--anim-blink:after
3398
3405
  background: rgba(255,255,255,.7)
3399
- animation: q-skeleton--fade 1.5s linear .5s infinite
3406
+ animation: q-skeleton--fade var(--q-skeleton-speed) linear .5s infinite
3400
3407
  &--anim-wave:after
3401
3408
  background: linear-gradient(90deg, rgba(255,255,255,0), rgba(255,255,255,.5), rgba(255,255,255,0))
3402
- animation: q-skeleton--wave 1.5s linear .5s infinite
3409
+ animation: q-skeleton--wave var(--q-skeleton-speed) linear .5s infinite
3403
3410
  &--dark
3404
3411
  background: rgba(255, 255, 255, 0.05)
3405
3412
  &.q-skeleton--bordered
@@ -6978,9 +6985,6 @@ img.responsive
6978
6985
  touch-action: pan-x
6979
6986
  .q-touch-y
6980
6987
  touch-action: pan-y
6981
- \:root
6982
- --q-transition-duration: .3s
6983
- --q-transition-easing: cubic-bezier(0.215,0.61,0.355,1)
6984
6988
  .q-transition
6985
6989
  &--slide-right,
6986
6990
  &--slide-left,
@@ -6994,6 +6998,10 @@ img.responsive
6994
6998
  &--scale,
6995
6999
  &--rotate,
6996
7000
  &--flip
7001
+ &-enter-active,
7002
+ &-leave-active
7003
+ --q-transition-duration: .3s
7004
+ --q-transition-easing: cubic-bezier(0.215,0.61,0.355,1)
6997
7005
  &-leave-active
6998
7006
  position: absolute
6999
7007
  &--slide-right,
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.1.9
2
+ * Quasar Framework v2.2.0
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1437,7 +1437,7 @@
1437
1437
  }
1438
1438
 
1439
1439
  var installQuasar = function (parentApp, opts = {}) {
1440
- const $q = { version: '2.1.9' };
1440
+ const $q = { version: '2.2.0' };
1441
1441
 
1442
1442
  if (globalConfigIsFrozen === false) {
1443
1443
  if (opts.config !== void 0) {
@@ -6064,6 +6064,10 @@
6064
6064
 
6065
6065
  transitionPrev: String,
6066
6066
  transitionNext: String,
6067
+ transitionDuration: {
6068
+ type: [ String, Number ],
6069
+ default: 300
6070
+ },
6067
6071
 
6068
6072
  keepAlive: Boolean,
6069
6073
  keepAliveInclude: [ String, Array, RegExp ],
@@ -6109,6 +6113,10 @@
6109
6113
  props.transitionNext || `slide-${ props.vertical === true ? 'up' : 'left' }`
6110
6114
  );
6111
6115
 
6116
+ const transitionStyle = vue.computed(
6117
+ () => `--q-transition-duration: ${ props.transitionDuration }ms`
6118
+ );
6119
+
6112
6120
  const contentKey = vue.computed(() => (
6113
6121
  typeof props.modelValue === 'string' || typeof props.modelValue === 'number'
6114
6122
  ? props.modelValue
@@ -6228,7 +6236,7 @@
6228
6236
  }
6229
6237
 
6230
6238
  function getPanelContentChild () {
6231
- const panel = isValidPanelName(props.modelValue)
6239
+ const panel = isValidPanelName(props.modelValue) === true
6232
6240
  && updatePanelIndex()
6233
6241
  && panels[ panelIndex.value ];
6234
6242
 
@@ -6239,7 +6247,7 @@
6239
6247
  needsUniqueKeepAliveWrapper.value === true
6240
6248
  ? getCacheWithFn(contentKey.value, () => ({ ...PanelWrapper$1, name: contentKey.value }))
6241
6249
  : PanelWrapper$1,
6242
- { key: contentKey.value },
6250
+ { key: contentKey.value, style: transitionStyle.value },
6243
6251
  () => panel
6244
6252
  )
6245
6253
  ])
@@ -6247,6 +6255,7 @@
6247
6255
  : [
6248
6256
  vue.h('div', {
6249
6257
  class: 'q-panel scroll',
6258
+ style: transitionStyle.value,
6250
6259
  key: contentKey.value,
6251
6260
  role: 'tabpanel'
6252
6261
  }, [ panel ])
@@ -6259,11 +6268,7 @@
6259
6268
  }
6260
6269
 
6261
6270
  return props.animated === true
6262
- ? [
6263
- vue.h(vue.Transition, {
6264
- name: panelTransition.value
6265
- }, getPanelContentChild)
6266
- ]
6271
+ ? [ vue.h(vue.Transition, { name: panelTransition.value }, getPanelContentChild) ]
6267
6272
  : getPanelContentChild()
6268
6273
  }
6269
6274
 
@@ -6273,7 +6278,7 @@
6273
6278
  ).filter(
6274
6279
  panel => panel.props !== null
6275
6280
  && panel.props.slot === void 0
6276
- && isValidPanelName(panel.props.name)
6281
+ && isValidPanelName(panel.props.name) === true
6277
6282
  );
6278
6283
 
6279
6284
  return panels.length
@@ -6661,7 +6666,14 @@
6661
6666
  });
6662
6667
 
6663
6668
  function startTimer () {
6664
- timer = setTimeout(nextPanel, isNumber(props.autoplay) ? props.autoplay : 5000);
6669
+ const duration = isNumber(props.autoplay) === true
6670
+ ? props.autoplay
6671
+ : 5000;
6672
+
6673
+ timer = setTimeout(
6674
+ duration >= 0 ? nextPanel : previousPanel,
6675
+ Math.abs(duration)
6676
+ );
6665
6677
  }
6666
6678
 
6667
6679
  vue.onMounted(() => {
@@ -9924,6 +9936,7 @@
9924
9936
  palette: Array,
9925
9937
 
9926
9938
  noHeader: Boolean,
9939
+ noHeaderTabs: Boolean,
9927
9940
  noFooter: Boolean,
9928
9941
 
9929
9942
  square: Boolean,
@@ -10009,7 +10022,7 @@
10009
10022
  ? true
10010
10023
  : luminosity(model.value) > 0.4;
10011
10024
 
10012
- return 'q-color-picker__header-content absolute-full'
10025
+ return 'q-color-picker__header-content'
10013
10026
  + ` q-color-picker__header-content--${ light ? 'light' : 'dark' }`
10014
10027
  });
10015
10028
 
@@ -10360,6 +10373,63 @@
10360
10373
  }
10361
10374
 
10362
10375
  function getHeader () {
10376
+ const child = [];
10377
+
10378
+ props.noHeaderTabs !== true && child.push(
10379
+ vue.h(QTabs, {
10380
+ class: 'q-color-picker__header-tabs',
10381
+ modelValue: topView.value,
10382
+ dense: true,
10383
+ align: 'justify',
10384
+ ...getCache('topVTab', {
10385
+ 'onUpdate:modelValue': val => { topView.value = val; }
10386
+ })
10387
+ }, () => [
10388
+ vue.h(QTab, {
10389
+ label: 'HEX' + (hasAlpha.value === true ? 'A' : ''),
10390
+ name: 'hex',
10391
+ ripple: false
10392
+ }),
10393
+
10394
+ vue.h(QTab, {
10395
+ label: 'RGB' + (hasAlpha.value === true ? 'A' : ''),
10396
+ name: 'rgb',
10397
+ ripple: false
10398
+ })
10399
+ ])
10400
+ );
10401
+
10402
+ child.push(
10403
+ vue.h('div', {
10404
+ class: 'q-color-picker__header-banner row flex-center no-wrap'
10405
+ }, [
10406
+ vue.h('input', {
10407
+ class: 'fit',
10408
+ value: model.value[ topView.value ],
10409
+ ...(editable.value !== true
10410
+ ? { readonly: true }
10411
+ : {}
10412
+ ),
10413
+ ...getCache('topIn', {
10414
+ onInput: evt => {
10415
+ updateErrorIcon(onEditorChange(evt) === true);
10416
+ },
10417
+ onChange: stop,
10418
+ onBlur: evt => {
10419
+ onEditorChange(evt, true) === true && proxy.$forceUpdate();
10420
+ updateErrorIcon(false);
10421
+ }
10422
+ })
10423
+ }),
10424
+
10425
+ vue.h(QIcon, {
10426
+ ref: errorIconRef,
10427
+ class: 'q-color-picker__error-icon absolute no-pointer-events',
10428
+ name: $q.iconSet.type.negative
10429
+ })
10430
+ ])
10431
+ );
10432
+
10363
10433
  return vue.h('div', {
10364
10434
  class: 'q-color-picker__header relative-position overflow-hidden'
10365
10435
  }, [
@@ -10368,57 +10438,7 @@
10368
10438
  vue.h('div', {
10369
10439
  class: headerClass.value,
10370
10440
  style: currentBgColor.value
10371
- }, [
10372
- vue.h(QTabs, {
10373
- modelValue: topView.value,
10374
- dense: true,
10375
- align: 'justify',
10376
- ...getCache('topVTab', {
10377
- 'onUpdate:modelValue': val => { topView.value = val; }
10378
- })
10379
- }, () => [
10380
- vue.h(QTab, {
10381
- label: 'HEX' + (hasAlpha.value === true ? 'A' : ''),
10382
- name: 'hex',
10383
- ripple: false
10384
- }),
10385
-
10386
- vue.h(QTab, {
10387
- label: 'RGB' + (hasAlpha.value === true ? 'A' : ''),
10388
- name: 'rgb',
10389
- ripple: false
10390
- })
10391
- ]),
10392
-
10393
- vue.h('div', {
10394
- class: 'q-color-picker__header-banner row flex-center no-wrap'
10395
- }, [
10396
- vue.h('input', {
10397
- class: 'fit',
10398
- value: model.value[ topView.value ],
10399
- ...(editable.value !== true
10400
- ? { readonly: true }
10401
- : {}
10402
- ),
10403
- ...getCache('topIn', {
10404
- onInput: evt => {
10405
- updateErrorIcon(onEditorChange(evt) === true);
10406
- },
10407
- onChange: stop,
10408
- onBlur: evt => {
10409
- onEditorChange(evt, true) === true && proxy.$forceUpdate();
10410
- updateErrorIcon(false);
10411
- }
10412
- })
10413
- }),
10414
-
10415
- vue.h(QIcon, {
10416
- ref: errorIconRef,
10417
- class: 'q-color-picker__error-icon absolute no-pointer-events',
10418
- name: $q.iconSet.type.negative
10419
- })
10420
- ])
10421
- ])
10441
+ }, child)
10422
10442
  ])
10423
10443
  }
10424
10444
 
@@ -10654,19 +10674,23 @@
10654
10674
  }
10655
10675
 
10656
10676
  function getPaletteTab () {
10677
+ const fn = color => vue.h('div', {
10678
+ class: 'q-color-picker__cube col-auto',
10679
+ style: { backgroundColor: color },
10680
+ ...(
10681
+ editable.value === true
10682
+ ? getCache('palette#' + color, {
10683
+ onClick: () => { onPalettePick(color); }
10684
+ })
10685
+ : {}
10686
+ )
10687
+ });
10688
+
10657
10689
  return [
10658
10690
  vue.h('div', {
10659
10691
  class: 'row items-center q-color-picker__palette-rows'
10660
10692
  + (editable.value === true ? ' q-color-picker__palette-rows--editable' : '')
10661
- }, computedPalette.value.map(color => vue.h('div', {
10662
- class: 'q-color-picker__cube col-auto',
10663
- style: { backgroundColor: color },
10664
- ...(editable.value === true ? getCache('palette#' + color, {
10665
- onClick: () => {
10666
- onPalettePick(color);
10667
- }
10668
- }) : {})
10669
- })))
10693
+ }, computedPalette.value.map(fn))
10670
10694
  ]
10671
10695
  }
10672
10696
 
@@ -13749,6 +13773,10 @@
13749
13773
  : transitionShow.value
13750
13774
  ));
13751
13775
 
13776
+ const transitionStyle = vue.computed(
13777
+ () => `--q-transition-duration: ${ props.transitionDuration }ms`
13778
+ );
13779
+
13752
13780
  const useBackdrop = vue.computed(() => showing.value === true && props.seamless !== true);
13753
13781
 
13754
13782
  const onEvents = vue.computed(() => (
@@ -13989,6 +14017,7 @@
13989
14017
  useBackdrop.value === true
13990
14018
  ? vue.h('div', {
13991
14019
  class: 'q-dialog__backdrop fixed-full',
14020
+ style: transitionStyle.value,
13992
14021
  'aria-hidden': 'true',
13993
14022
  onMousedown: onBackdropClick
13994
14023
  })
@@ -14003,6 +14032,7 @@
14003
14032
  ? vue.h('div', {
14004
14033
  ref: innerRef,
14005
14034
  class: classes.value,
14035
+ style: transitionStyle.value,
14006
14036
  tabindex: -1,
14007
14037
  ...onEvents.value
14008
14038
  }, hSlot(slots.default))
@@ -19790,7 +19820,11 @@
19790
19820
  size: {
19791
19821
  type: [ String, Number ],
19792
19822
  default: 42
19793
- }
19823
+ },
19824
+
19825
+ label: String,
19826
+ labelClass: String,
19827
+ labelStyle: [ String, Array, Object ]
19794
19828
  },
19795
19829
 
19796
19830
  setup (props, { slots }) {
@@ -19804,6 +19838,31 @@
19804
19838
  + (isDark.value === true ? ' q-inner-loading--dark' : '')
19805
19839
  );
19806
19840
 
19841
+ const labelClass = vue.computed(() =>
19842
+ 'q-inner-loading__label'
19843
+ + (props.labelClass !== void 0 ? ` ${ props.labelClass}` : '')
19844
+ );
19845
+
19846
+ function getInner () {
19847
+ const child = [
19848
+ vue.h(QSpinner, {
19849
+ size: props.size,
19850
+ color: props.color
19851
+ })
19852
+ ];
19853
+
19854
+ if (props.label !== void 0) {
19855
+ child.push(
19856
+ vue.h('div', {
19857
+ class: labelClass.value,
19858
+ style: props.labelStyle
19859
+ }, [ props.label ])
19860
+ );
19861
+ }
19862
+
19863
+ return child
19864
+ }
19865
+
19807
19866
  function getContent () {
19808
19867
  return props.showing === true
19809
19868
  ? vue.h(
@@ -19811,12 +19870,7 @@
19811
19870
  { class: classes.value, style: transitionStyle.value },
19812
19871
  slots.default !== void 0
19813
19872
  ? slots.default()
19814
- : [
19815
- vue.h(QSpinner, {
19816
- size: props.size,
19817
- color: props.color
19818
- })
19819
- ]
19873
+ : getInner()
19820
19874
  )
19821
19875
  : null
19822
19876
  }
@@ -21929,7 +21983,7 @@
21929
21983
 
21930
21984
  emits: [ 'update:modelValue' ],
21931
21985
 
21932
- setup (props, { emit }) {
21986
+ setup (props, { emit, slots }) {
21933
21987
  const { proxy: { $q } } = vue.getCurrentInstance();
21934
21988
 
21935
21989
  const arrayModel = Array.isArray(props.modelValue);
@@ -21973,24 +22027,34 @@
21973
22027
  return () => vue.h('div', {
21974
22028
  class: classes.value,
21975
22029
  ...attrs.value
21976
- }, props.options.map(opt => vue.h('div', [
21977
- vue.h(component.value, {
21978
- modelValue: props.modelValue,
21979
- val: opt.value,
21980
- name: opt.name === void 0 ? props.name : opt.name,
21981
- disable: props.disable || opt.disable,
21982
- label: opt.label,
21983
- leftLabel: opt.leftLabel === void 0 ? props.leftLabel : opt.leftLabel,
21984
- color: opt.color === void 0 ? props.color : opt.color,
21985
- checkedIcon: opt.checkedIcon,
21986
- uncheckedIcon: opt.uncheckedIcon,
21987
- dark: opt.dark || isDark.value,
21988
- size: opt.size === void 0 ? props.size : opt.size,
21989
- dense: props.dense,
21990
- keepColor: opt.keepColor === void 0 ? props.keepColor : opt.keepColor,
21991
- 'onUpdate:modelValue': onUpdateModelValue
21992
- })
21993
- ])))
22030
+ }, props.options.map((opt, i) => {
22031
+ const child = slots[ 'label-' + i ] !== void 0
22032
+ ? () => slots[ 'label-' + i ](opt)
22033
+ : (
22034
+ slots.label !== void 0
22035
+ ? () => slots.label(opt)
22036
+ : void 0
22037
+ );
22038
+
22039
+ return vue.h('div', [
22040
+ vue.h(component.value, {
22041
+ modelValue: props.modelValue,
22042
+ val: opt.value,
22043
+ name: opt.name === void 0 ? props.name : opt.name,
22044
+ disable: props.disable || opt.disable,
22045
+ label: child === void 0 ? opt.label : null,
22046
+ leftLabel: opt.leftLabel === void 0 ? props.leftLabel : opt.leftLabel,
22047
+ color: opt.color === void 0 ? props.color : opt.color,
22048
+ checkedIcon: opt.checkedIcon,
22049
+ uncheckedIcon: opt.uncheckedIcon,
22050
+ dark: opt.dark || isDark.value,
22051
+ size: opt.size === void 0 ? props.size : opt.size,
22052
+ dense: props.dense,
22053
+ keepColor: opt.keepColor === void 0 ? props.keepColor : opt.keepColor,
22054
+ 'onUpdate:modelValue': onUpdateModelValue
22055
+ }, child)
22056
+ ])
22057
+ }))
21994
22058
  }
21995
22059
  });
21996
22060
 
@@ -24068,6 +24132,51 @@
24068
24132
  }
24069
24133
  });
24070
24134
 
24135
+ const stars = vue.computed(() => {
24136
+ const
24137
+ acc = [],
24138
+ icons = iconData.value,
24139
+ ceil = Math.ceil(props.modelValue);
24140
+
24141
+ const halfIndex = props.iconHalf === void 0 || ceil === props.modelValue
24142
+ ? -1
24143
+ : ceil;
24144
+
24145
+ for (let i = 1; i <= props.max; i++) {
24146
+ const
24147
+ active = (mouseModel.value === 0 && props.modelValue >= i) || (mouseModel.value > 0 && mouseModel.value >= i),
24148
+ half = halfIndex === i && mouseModel.value < i,
24149
+ exSelected = mouseModel.value > 0 && (half === true ? ceil : props.modelValue) >= i && mouseModel.value < i,
24150
+ color = half === true
24151
+ ? (i <= icons.halfColorLen ? props.colorHalf[ i - 1 ] : icons.halfColor)
24152
+ : (
24153
+ icons.selColor !== void 0 && active === true
24154
+ ? (i <= icons.selColorLen ? props.colorSelected[ i - 1 ] : icons.selColor)
24155
+ : (i <= icons.colorLen ? props.color[ i - 1 ] : icons.color)
24156
+ );
24157
+
24158
+ acc.push({
24159
+ name: (
24160
+ half === true
24161
+ ? (i <= icons.halfIconLen ? props.iconHalf[ i - 1 ] : icons.halfIcon)
24162
+ : (
24163
+ icons.selIcon !== void 0 && (active === true || exSelected === true)
24164
+ ? (i <= icons.selIconLen ? props.iconSelected[ i - 1 ] : icons.selIcon)
24165
+ : (i <= icons.iconLen ? props.icon[ i - 1 ] : icons.icon)
24166
+ )
24167
+ ) || $q.iconSet.rating.icon,
24168
+
24169
+ classes: 'q-rating__icon'
24170
+ + (active === true || half === true ? ' q-rating__icon--active' : '')
24171
+ + (exSelected === true ? ' q-rating__icon--exselected' : '')
24172
+ + (mouseModel.value === i ? ' q-rating__icon--hovered' : '')
24173
+ + (color !== void 0 ? ` text-${ color }` : '')
24174
+ });
24175
+ }
24176
+
24177
+ return acc
24178
+ });
24179
+
24071
24180
  const attributes = vue.computed(() => {
24072
24181
  if (props.disable === true) {
24073
24182
  return { 'aria-disabled': 'true' }
@@ -24077,6 +24186,8 @@
24077
24186
  }
24078
24187
  });
24079
24188
 
24189
+ const tabindex = vue.computed(() => (editable.value === true ? 0 : null));
24190
+
24080
24191
  function set (value) {
24081
24192
  if (editable.value === true) {
24082
24193
  const
@@ -24124,57 +24235,29 @@
24124
24235
  });
24125
24236
 
24126
24237
  return () => {
24127
- const
24128
- child = [],
24129
- tabindex = editable.value === true ? 0 : null,
24130
- icons = iconData.value,
24131
- ceil = Math.ceil(props.modelValue);
24238
+ const child = [];
24132
24239
 
24133
- const halfIndex = props.iconHalf === void 0 || ceil === props.modelValue
24134
- ? -1
24135
- : ceil;
24136
-
24137
- for (let i = 1; i <= props.max; i++) {
24138
- const
24139
- active = (mouseModel.value === 0 && props.modelValue >= i) || (mouseModel.value > 0 && mouseModel.value >= i),
24140
- half = halfIndex === i && mouseModel.value < i,
24141
- exSelected = mouseModel.value > 0 && (half === true ? ceil : props.modelValue) >= i && mouseModel.value < i,
24142
- name = half === true
24143
- ? (i <= icons.halfIconLen ? props.iconHalf[ i - 1 ] : icons.halfIcon)
24144
- : (
24145
- icons.selIcon !== void 0 && (active === true || exSelected === true)
24146
- ? (i <= icons.selIconLen ? props.iconSelected[ i - 1 ] : icons.selIcon)
24147
- : (i <= icons.iconLen ? props.icon[ i - 1 ] : icons.icon)
24148
- ),
24149
- color = half === true
24150
- ? (i <= icons.halfColorLen ? props.colorHalf[ i - 1 ] : icons.halfColor)
24151
- : (
24152
- icons.selColor !== void 0 && active === true
24153
- ? (i <= icons.selColorLen ? props.colorSelected[ i - 1 ] : icons.selColor)
24154
- : (i <= icons.colorLen ? props.color[ i - 1 ] : icons.color)
24155
- ),
24156
- classes = 'q-rating__icon'
24157
- + (active === true || half === true ? ' q-rating__icon--active' : '')
24158
- + (exSelected === true ? ' q-rating__icon--exselected' : '')
24159
- + (mouseModel.value === i ? ' q-rating__icon--hovered' : '')
24160
- + (color !== void 0 ? ` text-${ color }` : '');
24240
+ stars.value.forEach(({ classes, name }, index) => {
24241
+ const i = index + 1;
24161
24242
 
24162
24243
  child.push(
24163
- vue.h(QIcon, {
24244
+ vue.h('div', {
24164
24245
  key: i,
24165
24246
  ref: vm => { iconRefs[ `rt${ i }` ] = vm; },
24166
- class: classes,
24167
- name: name || $q.iconSet.rating.icon,
24168
- tabindex,
24247
+ class: 'q-rating__icon-container flex flex-center',
24248
+ tabindex: tabindex.value,
24169
24249
  onClick () { set(i); },
24170
24250
  onMouseover () { setHoverValue(i); },
24171
24251
  onMouseout: resetMouseModel,
24172
24252
  onFocus () { setHoverValue(i); },
24173
24253
  onBlur: resetMouseModel,
24174
24254
  onKeyup (e) { onKeyup(e, i); }
24175
- }, slots[ `tip-${ i }` ])
24255
+ }, hMergeSlot(
24256
+ slots[ `tip-${ i }` ],
24257
+ [ vue.h(QIcon, { class: classes, name }) ]
24258
+ ))
24176
24259
  );
24177
- }
24260
+ });
24178
24261
 
24179
24262
  if (props.name !== void 0 && props.disable !== true) {
24180
24263
  injectFormInput(child, 'push');
@@ -26874,6 +26957,10 @@
26874
26957
  validator: v => skeletonAnimations.includes(v),
26875
26958
  default: 'wave'
26876
26959
  },
26960
+ animationSpeed: {
26961
+ type: [ String, Number ],
26962
+ default: 1500
26963
+ },
26877
26964
 
26878
26965
  square: Boolean,
26879
26966
  bordered: Boolean,
@@ -26887,11 +26974,17 @@
26887
26974
  const vm = vue.getCurrentInstance();
26888
26975
  const isDark = useDark(props, vm.proxy.$q);
26889
26976
 
26890
- const style = vue.computed(() => (
26891
- props.size !== void 0
26892
- ? { width: props.size, height: props.size }
26893
- : { width: props.width, height: props.height }
26894
- ));
26977
+ const style = vue.computed(() => {
26978
+ const size = props.size !== void 0
26979
+ ? [ props.size, props.size ]
26980
+ : [ props.width, props.height ];
26981
+
26982
+ return {
26983
+ '--q-skeleton-speed': `${ props.animationSpeed }ms`,
26984
+ width: size[ 0 ],
26985
+ height: size[ 1 ]
26986
+ }
26987
+ });
26895
26988
 
26896
26989
  const classes = vue.computed(() =>
26897
26990
  `q-skeleton q-skeleton--${ isDark.value === true ? 'dark' : 'light' } q-skeleton--type-${ props.type }`
@@ -38587,7 +38680,7 @@
38587
38680
  });
38588
38681
 
38589
38682
  var index_umd = {
38590
- version: '2.1.9',
38683
+ version: '2.2.0',
38591
38684
  install (app, opts) {
38592
38685
  installQuasar(app, {
38593
38686
  components,