quasar 2.4.13 → 2.5.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 (163) hide show
  1. package/dist/api/QCheckbox.json +27 -0
  2. package/dist/api/QRadio.json +18 -0
  3. package/dist/api/QTime.json +8 -2
  4. package/dist/api/QToggle.json +24 -24
  5. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  6. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  7. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  8. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  9. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  10. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  11. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  12. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  13. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  14. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  15. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  16. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  17. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  18. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  19. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  20. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  21. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  22. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  23. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  24. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  25. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  26. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-mdi-v4.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-mdi-v5.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  34. package/dist/icon-set/themify.umd.prod.js +1 -1
  35. package/dist/lang/ar.umd.prod.js +1 -1
  36. package/dist/lang/az-Latn.umd.prod.js +1 -1
  37. package/dist/lang/bg.umd.prod.js +1 -1
  38. package/dist/lang/bn.umd.prod.js +1 -1
  39. package/dist/lang/ca.umd.prod.js +1 -1
  40. package/dist/lang/cs.umd.prod.js +1 -1
  41. package/dist/lang/da.umd.prod.js +1 -1
  42. package/dist/lang/de.umd.prod.js +1 -1
  43. package/dist/lang/el.umd.prod.js +1 -1
  44. package/dist/lang/en-GB.umd.prod.js +1 -1
  45. package/dist/lang/en-US.umd.prod.js +1 -1
  46. package/dist/lang/eo.umd.prod.js +1 -1
  47. package/dist/lang/es.umd.prod.js +1 -1
  48. package/dist/lang/et.umd.prod.js +1 -1
  49. package/dist/lang/fa-IR.umd.prod.js +1 -1
  50. package/dist/lang/fa.umd.prod.js +1 -1
  51. package/dist/lang/fi.umd.prod.js +1 -1
  52. package/dist/lang/fr.umd.prod.js +1 -1
  53. package/dist/lang/gn.umd.prod.js +1 -1
  54. package/dist/lang/he.umd.prod.js +1 -1
  55. package/dist/lang/hr.umd.prod.js +1 -1
  56. package/dist/lang/hu.umd.prod.js +1 -1
  57. package/dist/lang/id.umd.prod.js +1 -1
  58. package/dist/lang/is.umd.prod.js +1 -1
  59. package/dist/lang/it.umd.prod.js +1 -1
  60. package/dist/lang/ja.umd.prod.js +1 -1
  61. package/dist/lang/km.umd.prod.js +1 -1
  62. package/dist/lang/ko-KR.umd.prod.js +1 -1
  63. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  64. package/dist/lang/lt.umd.prod.js +1 -1
  65. package/dist/lang/lu.umd.prod.js +1 -1
  66. package/dist/lang/lv.umd.prod.js +1 -1
  67. package/dist/lang/ml.umd.prod.js +1 -1
  68. package/dist/lang/ms.umd.prod.js +1 -1
  69. package/dist/lang/my.umd.prod.js +1 -1
  70. package/dist/lang/nb-NO.umd.prod.js +1 -1
  71. package/dist/lang/nl.umd.prod.js +1 -1
  72. package/dist/lang/pl.umd.prod.js +1 -1
  73. package/dist/lang/pt-BR.umd.prod.js +1 -1
  74. package/dist/lang/pt.umd.prod.js +1 -1
  75. package/dist/lang/ro.umd.prod.js +1 -1
  76. package/dist/lang/ru.umd.prod.js +1 -1
  77. package/dist/lang/sk.umd.prod.js +1 -1
  78. package/dist/lang/sl.umd.prod.js +1 -1
  79. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  80. package/dist/lang/sr.umd.prod.js +1 -1
  81. package/dist/lang/sv.umd.prod.js +1 -1
  82. package/dist/lang/ta.umd.prod.js +1 -1
  83. package/dist/lang/th.umd.prod.js +1 -1
  84. package/dist/lang/tr.umd.prod.js +1 -1
  85. package/dist/lang/ug.umd.prod.js +1 -1
  86. package/dist/lang/uk.umd.prod.js +1 -1
  87. package/dist/lang/vi.umd.prod.js +1 -1
  88. package/dist/lang/zh-CN.umd.prod.js +1 -1
  89. package/dist/lang/zh-TW.umd.prod.js +1 -1
  90. package/dist/quasar.cjs.prod.js +2 -2
  91. package/dist/quasar.css +34 -10
  92. package/dist/quasar.esm.prod.js +2 -2
  93. package/dist/quasar.prod.css +1 -1
  94. package/dist/quasar.rtl.css +51 -23
  95. package/dist/quasar.rtl.prod.css +1 -1
  96. package/dist/quasar.sass +29 -11
  97. package/dist/quasar.umd.js +119 -49
  98. package/dist/quasar.umd.prod.js +2 -2
  99. package/dist/ssr-directives/Morph.js +1 -1
  100. package/dist/transforms/auto-import.json +39 -3
  101. package/dist/transforms/import-map.json +18 -0
  102. package/dist/types/index.d.ts +35 -13
  103. package/dist/vetur/quasar-attributes.json +32 -12
  104. package/dist/vetur/quasar-tags.json +8 -3
  105. package/dist/web-types/web-types.json +73 -28
  106. package/package.json +13 -3
  107. package/src/components/avatar/__tests__/QAvatar.spec.js +121 -0
  108. package/src/components/badge/__tests__/QBadge.spec.js +74 -0
  109. package/src/components/breadcrumbs/QBreadcrumbs.js +1 -1
  110. package/src/components/btn/__tests__/QBtn.spec.js +55 -0
  111. package/src/components/btn/__tests__/use-btn.spec.js +189 -0
  112. package/src/components/checkbox/QCheckbox.js +34 -3
  113. package/src/components/checkbox/QCheckbox.json +17 -0
  114. package/src/components/checkbox/QCheckbox.sass +17 -5
  115. package/src/components/checkbox/use-checkbox.js +4 -0
  116. package/src/components/checkbox/use-checkbox.json +18 -0
  117. package/src/components/chip/__tests__/QChip.spec.js +155 -0
  118. package/src/components/date/__tests__/QDate.spec.js +189 -0
  119. package/src/components/date/__tests__/use-datetime.spec.js +83 -0
  120. package/src/components/dialog/__tests__/QDialog.spec.js +129 -0
  121. package/src/components/editor/__tests__/QEditor.spec.js +195 -0
  122. package/src/components/input/QInput.js +9 -0
  123. package/src/components/input/__tests__/QInput.spec.js +105 -0
  124. package/src/components/input/__tests__/use-mask.spec.js +29 -0
  125. package/src/components/menu/__tests__/QMenu.spec.js +610 -0
  126. package/src/components/menu/__tests__/WrapperOne.vue +51 -0
  127. package/src/components/menu/__tests__/WrapperTwo.vue +38 -0
  128. package/src/components/radio/QRadio.js +26 -1
  129. package/src/components/radio/QRadio.json +16 -0
  130. package/src/components/radio/QRadio.sass +17 -6
  131. package/src/components/select/QSelect.js +1 -1
  132. package/src/components/select/__tests__/QSelect.spec.js +2003 -0
  133. package/src/components/select/__tests__/WrapperOne.vue +28 -0
  134. package/src/components/table/__tests__/QTable.spec.js +635 -0
  135. package/src/components/table/__tests__/QTd.spec.js +35 -0
  136. package/src/components/table/__tests__/QTh.spec.js +27 -0
  137. package/src/components/table/__tests__/QTr.spec.js +27 -0
  138. package/src/components/tabs/__tests__/QRouteTab.spec.js +9 -0
  139. package/src/components/tabs/__tests__/QTab.spec.js +79 -0
  140. package/src/components/tabs/__tests__/QTabs.spec.js +147 -0
  141. package/src/components/time/QTime.json +2 -2
  142. package/src/components/toggle/QToggle.js +5 -13
  143. package/src/components/toggle/QToggle.json +3 -12
  144. package/src/components/uploader/__tests__/QUploader.spec.js +161 -0
  145. package/src/composables/private/__tests__/FieldWrapper.vue +39 -0
  146. package/src/composables/private/__tests__/use-anchor.spec.js +99 -0
  147. package/src/composables/private/__tests__/use-field.spec.js +351 -0
  148. package/src/composables/private/__tests__/use-file.spec.js +69 -0
  149. package/src/composables/private/__tests__/use-form.spec.js +11 -0
  150. package/src/composables/private/__tests__/use-fullscreen.spec.js +37 -0
  151. package/src/composables/private/__tests__/use-model-toggle.spec.js +306 -0
  152. package/src/composables/private/__tests__/use-portal.spec.js +4 -0
  153. package/src/composables/private/__tests__/use-router-link.spec.js +55 -0
  154. package/src/composables/private/__tests__/use-size.spec.js +37 -0
  155. package/src/composables/private/__tests__/use-transition.spec.js +108 -0
  156. package/src/composables/private/__tests__/use-validate.spec.js +111 -0
  157. package/src/composables/private/use-fullscreen.js +1 -1
  158. package/src/composables/private/use-model-toggle.js +1 -1
  159. package/src/composables/private/use-validate.js +9 -5
  160. package/src/plugins/Meta.js +1 -1
  161. package/src/plugins/Screen.js +11 -8
  162. package/src/utils/date.js +5 -5
  163. package/src/utils/private/vm.js +14 -8
package/dist/quasar.sass CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.4.13
2
+ * Quasar Framework v2.5.0
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1283,18 +1283,24 @@ input[type='search']::-webkit-search-decoration
1283
1283
  $checkbox-transition: .22s cubic-bezier(0,0,.2,1) 0ms
1284
1284
  .q-checkbox
1285
1285
  vertical-align: middle
1286
- &__bg
1286
+ &__native
1287
+ width: 1px
1288
+ height: 1px
1289
+ &__bg,
1290
+ &__icon-container
1287
1291
  top: 25%
1288
1292
  left: 25%
1289
1293
  width: 50%
1290
1294
  height: 50%
1295
+ user-select: none
1296
+ &__bg
1291
1297
  border: 2px solid currentColor
1292
1298
  border-radius: 2px
1293
1299
  transition: background $checkbox-transition
1294
1300
  -webkit-print-color-adjust: exact
1295
- &__native
1296
- width: 1px
1297
- height: 1px
1301
+ &__icon
1302
+ color: currentColor
1303
+ font-size: .6em
1298
1304
  &__svg
1299
1305
  color: #fff
1300
1306
  &__truthy
@@ -1336,11 +1342,14 @@ $checkbox-transition: .22s cubic-bezier(0,0,.2,1) 0ms
1336
1342
  &--truthy, &--indet
1337
1343
  color: var(--q-primary)
1338
1344
  &--dense
1345
+ .q-checkbox__icon
1346
+ font-size: .6em
1339
1347
  .q-checkbox__inner
1340
1348
  width: .5em
1341
1349
  min-width: .5em
1342
1350
  height: .5em
1343
- .q-checkbox__bg
1351
+ .q-checkbox__bg,
1352
+ .q-checkbox__icon-container
1344
1353
  left: 5%
1345
1354
  top: 5%
1346
1355
  width: 90%
@@ -3107,17 +3116,23 @@ body.platform-ios
3107
3116
  $radio-transition: .22s cubic-bezier(0,0,.2,1) 0ms
3108
3117
  .q-radio
3109
3118
  vertical-align: middle
3110
- &__bg
3119
+ &__native
3120
+ width: 1px
3121
+ height: 1px
3122
+ &__bg,
3123
+ &__icon-container
3111
3124
  top: 25%
3112
3125
  left: 25%
3113
3126
  width: 50%
3114
3127
  height: 50%
3128
+ user-select: none
3129
+ &__bg
3115
3130
  -webkit-print-color-adjust: exact
3116
3131
  path
3117
3132
  fill: currentColor
3118
- &__native
3119
- width: 1px
3120
- height: 1px
3133
+ &__icon
3134
+ color: currentColor
3135
+ font-size: .6em
3121
3136
  &__check
3122
3137
  transform-origin: 50% 50%
3123
3138
  transform: scale3d(0, 0, 1)
@@ -3144,11 +3159,14 @@ $radio-transition: .22s cubic-bezier(0,0,.2,1) 0ms
3144
3159
  &--truthy
3145
3160
  color: var(--q-primary)
3146
3161
  &--dense
3162
+ .q-checkbox__icon
3163
+ font-size: .6em
3147
3164
  .q-radio__inner
3148
3165
  width: .5em
3149
3166
  min-width: .5em
3150
3167
  height: .5em
3151
- .q-radio__bg
3168
+ .q-radio__bg,
3169
+ .q-radio__icon-container
3152
3170
  left: 0
3153
3171
  top: 0
3154
3172
  width: 100%
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.4.13
2
+ * Quasar Framework v2.5.0
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -633,12 +633,19 @@
633
633
  return
634
634
  }
635
635
 
636
+ const { visualViewport } = window;
637
+ const target = visualViewport || window;
638
+ const getSize = visualViewport === void 0
639
+ ? () => [ window.innerWidth, window.innerHeight ]
640
+ : () => [
641
+ visualViewport.width * visualViewport.scale + window.innerWidth - document.scrollingElement.clientWidth,
642
+ visualViewport.height * visualViewport.scale + window.innerHeight - document.scrollingElement.clientHeight
643
+ ];
644
+
636
645
  const classes = $q.config.screen !== void 0 && $q.config.screen.bodyClasses === true;
637
646
 
638
647
  this.__update = force => {
639
- const
640
- w = window.innerWidth,
641
- h = window.innerHeight;
648
+ const [ w, h ] = getSize();
642
649
 
643
650
  if (h !== this.height) {
644
651
  this.height = h;
@@ -696,11 +703,7 @@
696
703
  };
697
704
 
698
705
  const start = () => {
699
- const
700
- style = getComputedStyle(document.body),
701
- target = window.visualViewport !== void 0
702
- ? window.visualViewport
703
- : window;
706
+ const style = getComputedStyle(document.body);
704
707
 
705
708
  // if css props available
706
709
  if (style.getPropertyValue('--q-size-sm')) {
@@ -1456,7 +1459,7 @@
1456
1459
  }
1457
1460
 
1458
1461
  var installQuasar = function (parentApp, opts = {}) {
1459
- const $q = { version: '2.4.13' };
1462
+ const $q = { version: '2.5.0' };
1460
1463
 
1461
1464
  if (globalConfigIsFrozen === false) {
1462
1465
  if (opts.config !== void 0) {
@@ -2335,19 +2338,25 @@
2335
2338
  }
2336
2339
  }
2337
2340
 
2341
+ function fillNormalizedVNodes (children, vnode) {
2342
+ if (typeof vnode.type === 'symbol') {
2343
+ if (Array.isArray(vnode.children) === true) {
2344
+ vnode.children.forEach(child => {
2345
+ fillNormalizedVNodes(children, child);
2346
+ });
2347
+ }
2348
+ }
2349
+ else {
2350
+ children.add(vnode);
2351
+ }
2352
+ }
2353
+
2338
2354
  // vnodes from rendered in advanced slots
2339
2355
  function getNormalizedVNodes (vnodes) {
2340
2356
  const children = new Set();
2341
2357
 
2342
2358
  vnodes.forEach(vnode => {
2343
- if (typeof vnode.type === 'symbol' && Array.isArray(vnode.children) === true) {
2344
- vnode.children.forEach(child => {
2345
- children.add(child);
2346
- });
2347
- }
2348
- else {
2349
- children.add(vnode);
2350
- }
2359
+ fillNormalizedVNodes(children, vnode);
2351
2360
  });
2352
2361
 
2353
2362
  return Array.from(children)
@@ -2398,7 +2407,7 @@
2398
2407
  hSlot(slots.default)
2399
2408
  );
2400
2409
 
2401
- if (vnodes === void 0) { return }
2410
+ if (vnodes.length === 0) { return }
2402
2411
 
2403
2412
  let els = 1;
2404
2413
 
@@ -4059,7 +4068,7 @@
4059
4068
  vue.watch(() => props.modelValue, processModelChange);
4060
4069
 
4061
4070
  if (hideOnRouteChange !== void 0 && vmHasRouter(vm) === true) {
4062
- vue.watch(() => proxy.$route, () => {
4071
+ vue.watch(() => proxy.$route.fullPath, () => {
4063
4072
  if (hideOnRouteChange.value === true && showing.value === true) {
4064
4073
  hide();
4065
4074
  }
@@ -6414,7 +6423,7 @@
6414
6423
  let historyEntry, fullscreenFillerNode, container;
6415
6424
  const inFullscreen = vue.ref(false);
6416
6425
 
6417
- vmHasRouter(vm) === true && vue.watch(() => proxy.$route, () => {
6426
+ vmHasRouter(vm) === true && vue.watch(() => proxy.$route.fullPath, () => {
6418
6427
  props.noRouteFullscreenExit !== true && exitFullscreen();
6419
6428
  });
6420
6429
 
@@ -7171,6 +7180,10 @@
7171
7180
  falseValue: { default: false },
7172
7181
  indeterminateValue: { default: null },
7173
7182
 
7183
+ checkedIcon: String,
7184
+ uncheckedIcon: String,
7185
+ indeterminateIcon: String,
7186
+
7174
7187
  toggleOrder: {
7175
7188
  type: String,
7176
7189
  validator: v => v === 'tf' || v === 'ft'
@@ -7383,6 +7396,7 @@
7383
7396
  }
7384
7397
 
7385
7398
  const bgNode = vue.h('div', {
7399
+ key: 'svg',
7386
7400
  class: 'q-checkbox__bg absolute'
7387
7401
  }, [
7388
7402
  vue.h('svg', {
@@ -7409,8 +7423,36 @@
7409
7423
  props: useCheckboxProps,
7410
7424
  emits: useCheckboxEmits,
7411
7425
 
7412
- setup () {
7413
- return useCheckbox('checkbox', () => () => [ bgNode ])
7426
+ setup (props) {
7427
+ function getInner (isTrue, isIndeterminate) {
7428
+ const icon = vue.computed(() =>
7429
+ (isTrue.value === true
7430
+ ? props.checkedIcon
7431
+ : (isIndeterminate.value === true
7432
+ ? props.indeterminateIcon
7433
+ : props.uncheckedIcon
7434
+ )
7435
+ ) || null
7436
+ );
7437
+
7438
+ return () => (
7439
+ icon.value !== null
7440
+ ? [
7441
+ vue.h('div', {
7442
+ key: 'icon',
7443
+ class: 'q-checkbox__icon-container absolute flex flex-center no-wrap'
7444
+ }, [
7445
+ vue.h(QIcon, {
7446
+ class: 'q-checkbox__icon',
7447
+ name: icon.value
7448
+ })
7449
+ ])
7450
+ ]
7451
+ : [ bgNode ]
7452
+ )
7453
+ }
7454
+
7455
+ return useCheckbox('checkbox', getInner)
7414
7456
  }
7415
7457
  });
7416
7458
 
@@ -11748,16 +11790,16 @@
11748
11790
  month += sign * mod.months;
11749
11791
  }
11750
11792
 
11751
- if (mod.days !== void 0) {
11752
- day += sign * mod.days;
11753
- }
11754
-
11755
11793
  date.setDate(1);
11756
11794
  date.setMonth(2);
11757
11795
 
11758
11796
  date.setFullYear(year);
11759
11797
  date.setMonth(month);
11760
- date.setDate(day);
11798
+ date.setDate(Math.min(day, daysInMonth(date)));
11799
+
11800
+ if (mod.days !== void 0) {
11801
+ date.setDate(date.getDate() + sign * mod.days);
11802
+ }
11761
11803
 
11762
11804
  return date
11763
11805
  }
@@ -20218,12 +20260,16 @@
20218
20260
  let validateIndex = 0, unwatchRules;
20219
20261
 
20220
20262
  const hasRules = vue.computed(() =>
20221
- props.disable !== true
20222
- && props.rules !== void 0
20263
+ props.rules !== void 0
20223
20264
  && props.rules !== null
20224
20265
  && props.rules.length > 0
20225
20266
  );
20226
20267
 
20268
+ const hasActiveRules = vue.computed(() =>
20269
+ props.disable !== true
20270
+ && hasRules.value === true
20271
+ );
20272
+
20227
20273
  const hasError = vue.computed(() =>
20228
20274
  props.error === true || innerError.value === true
20229
20275
  );
@@ -20261,7 +20307,7 @@
20261
20307
  else if (isDirtyModel.value === false) {
20262
20308
  isDirtyModel.value = true;
20263
20309
 
20264
- if (hasRules.value === true && props.lazyRules !== 'ondemand') {
20310
+ if (hasActiveRules.value === true && props.lazyRules !== 'ondemand') {
20265
20311
  debouncedValidate();
20266
20312
  }
20267
20313
  }
@@ -20283,7 +20329,7 @@
20283
20329
  * - Promise (pending async validation)
20284
20330
  */
20285
20331
  function validate (val = props.modelValue) {
20286
- if (hasRules.value !== true) {
20332
+ if (hasActiveRules.value !== true) {
20287
20333
  return true
20288
20334
  }
20289
20335
 
@@ -20371,7 +20417,7 @@
20371
20417
 
20372
20418
  function validateIfNeeded (changedRules) {
20373
20419
  if (
20374
- hasRules.value === true
20420
+ hasActiveRules.value === true
20375
20421
  && props.lazyRules !== 'ondemand'
20376
20422
  && (isDirtyModel.value === true || (props.lazyRules !== true && changedRules !== true))
20377
20423
  ) {
@@ -23167,6 +23213,15 @@
23167
23213
  return attrs
23168
23214
  });
23169
23215
 
23216
+ // some browsers lose the native input value
23217
+ // so we need to reattach it dynamically
23218
+ // (like type="password" <-> type="text"; see #12078)
23219
+ vue.watch(() => props.type, () => {
23220
+ if (inputRef.value) {
23221
+ inputRef.value.value = props.modelValue;
23222
+ }
23223
+ });
23224
+
23170
23225
  vue.watch(() => props.modelValue, v => {
23171
23226
  if (hasMask.value === true) {
23172
23227
  if (stopValueWatcher === true) {
@@ -24386,6 +24441,7 @@
24386
24441
  });
24387
24442
 
24388
24443
  const svg$m = vue.h('svg', {
24444
+ key: 'svg',
24389
24445
  class: 'q-radio__bg absolute non-selectable',
24390
24446
  viewBox: '0 0 24 24',
24391
24447
  'aria-hidden': 'true'
@@ -24414,6 +24470,9 @@
24414
24470
  label: String,
24415
24471
  leftLabel: Boolean,
24416
24472
 
24473
+ checkedIcon: String,
24474
+ uncheckedIcon: String,
24475
+
24417
24476
  color: String,
24418
24477
  keepColor: Boolean,
24419
24478
  dense: Boolean,
@@ -24455,6 +24514,13 @@
24455
24514
  + `q-radio__inner--${ isTrue.value === true ? 'truthy' : 'falsy' }${ color }`
24456
24515
  });
24457
24516
 
24517
+ const icon = vue.computed(() =>
24518
+ (isTrue.value === true
24519
+ ? props.checkedIcon
24520
+ : props.uncheckedIcon
24521
+ ) || null
24522
+ );
24523
+
24458
24524
  const tabindex = vue.computed(() => (
24459
24525
  props.disable === true ? -1 : props.tabindex || 0
24460
24526
  ));
@@ -24500,7 +24566,19 @@
24500
24566
  Object.assign(proxy, { set: onClick });
24501
24567
 
24502
24568
  return () => {
24503
- const content = [ svg$m ];
24569
+ const content = icon.value !== null
24570
+ ? [
24571
+ vue.h('div', {
24572
+ key: 'icon',
24573
+ class: 'q-radio__icon-container absolute flex flex-center no-wrap'
24574
+ }, [
24575
+ vue.h(QIcon, {
24576
+ class: 'q-radio__icon',
24577
+ name: icon.value
24578
+ })
24579
+ ])
24580
+ ]
24581
+ : [ svg$m ];
24504
24582
 
24505
24583
  props.disable !== true && injectFormInput(
24506
24584
  content,
@@ -24552,10 +24630,6 @@
24552
24630
  ...useCheckboxProps,
24553
24631
 
24554
24632
  icon: String,
24555
- checkedIcon: String,
24556
- uncheckedIcon: String,
24557
- indeterminateIcon: String,
24558
-
24559
24633
  iconColor: String
24560
24634
  },
24561
24635
 
@@ -24563,29 +24637,25 @@
24563
24637
 
24564
24638
  setup (props) {
24565
24639
  function getInner (isTrue, isIndeterminate) {
24566
- const computedIcon = vue.computed(() =>
24640
+ const icon = vue.computed(() =>
24567
24641
  (isTrue.value === true
24568
24642
  ? props.checkedIcon
24569
24643
  : (isIndeterminate.value === true ? props.indeterminateIcon : props.uncheckedIcon)
24570
24644
  ) || props.icon
24571
24645
  );
24572
24646
 
24573
- const computedIconColor = vue.computed(() => {
24574
- if (isTrue.value === true) {
24575
- return props.iconColor
24576
- }
24577
- });
24647
+ const color = vue.computed(() => (isTrue.value === true ? props.iconColor : null));
24578
24648
 
24579
24649
  return () => [
24580
24650
  vue.h('div', { class: 'q-toggle__track' }),
24581
24651
 
24582
24652
  vue.h('div', {
24583
24653
  class: 'q-toggle__thumb absolute flex flex-center no-wrap'
24584
- }, computedIcon.value !== void 0
24654
+ }, icon.value !== void 0
24585
24655
  ? [
24586
24656
  vue.h(QIcon, {
24587
- name: computedIcon.value,
24588
- color: computedIconColor.value
24657
+ name: icon.value,
24658
+ color: color.value
24589
24659
  })
24590
24660
  ]
24591
24661
  : void 0
@@ -29352,7 +29422,7 @@
29352
29422
  filter, updateMenuPosition, updateInputValue,
29353
29423
  isOptionSelected,
29354
29424
  getEmittingOptionValue,
29355
- isOptionDisabled: (...args) => isOptionDisabled.value.apply(null, args),
29425
+ isOptionDisabled: (...args) => isOptionDisabled.value.apply(null, args) === true,
29356
29426
  getOptionValue: (...args) => getOptionValue.value.apply(null, args),
29357
29427
  getOptionLabel: (...args) => getOptionLabel.value.apply(null, args)
29358
29428
  });
@@ -39369,7 +39439,7 @@
39369
39439
  });
39370
39440
 
39371
39441
  var index_umd = {
39372
- version: '2.4.13',
39442
+ version: '2.5.0',
39373
39443
  install (app, opts) {
39374
39444
  installQuasar(app, {
39375
39445
  components,