quasar 1.17.7 → 1.18.2

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 (131) hide show
  1. package/dist/api/QCheckbox.json +27 -0
  2. package/dist/api/QRadio.json +18 -0
  3. package/dist/api/QToggle.json +24 -25
  4. package/dist/icon-set/bootstrap-icons.umd.min.js +1 -1
  5. package/dist/icon-set/eva-icons.umd.min.js +1 -1
  6. package/dist/icon-set/fontawesome-v5-pro.umd.min.js +1 -1
  7. package/dist/icon-set/fontawesome-v5.umd.min.js +1 -1
  8. package/dist/icon-set/ionicons-v4.umd.min.js +1 -1
  9. package/dist/icon-set/line-awesome.umd.min.js +1 -1
  10. package/dist/icon-set/material-icons-outlined.umd.min.js +1 -1
  11. package/dist/icon-set/material-icons-round.umd.min.js +1 -1
  12. package/dist/icon-set/material-icons-sharp.umd.min.js +1 -1
  13. package/dist/icon-set/material-icons.umd.min.js +1 -1
  14. package/dist/icon-set/mdi-v3.umd.min.js +1 -1
  15. package/dist/icon-set/mdi-v4.umd.min.js +1 -1
  16. package/dist/icon-set/mdi-v5.umd.min.js +1 -1
  17. package/dist/icon-set/mdi-v6.umd.min.js +1 -1
  18. package/dist/icon-set/svg-bootstrap-icons.umd.min.js +1 -1
  19. package/dist/icon-set/svg-eva-icons.umd.min.js +1 -1
  20. package/dist/icon-set/svg-fontawesome-v5.umd.min.js +1 -1
  21. package/dist/icon-set/svg-ionicons-v4.umd.min.js +1 -1
  22. package/dist/icon-set/svg-ionicons-v5.umd.min.js +1 -1
  23. package/dist/icon-set/svg-ionicons-v6.umd.min.js +1 -1
  24. package/dist/icon-set/svg-line-awesome.umd.min.js +1 -1
  25. package/dist/icon-set/svg-material-icons-outlined.umd.min.js +1 -1
  26. package/dist/icon-set/svg-material-icons-round.umd.min.js +1 -1
  27. package/dist/icon-set/svg-material-icons-sharp.umd.min.js +1 -1
  28. package/dist/icon-set/svg-material-icons.umd.min.js +1 -1
  29. package/dist/icon-set/svg-mdi-v4.umd.min.js +1 -1
  30. package/dist/icon-set/svg-mdi-v5.umd.min.js +1 -1
  31. package/dist/icon-set/svg-mdi-v6.umd.min.js +1 -1
  32. package/dist/icon-set/svg-themify.umd.min.js +1 -1
  33. package/dist/icon-set/themify.umd.min.js +1 -1
  34. package/dist/lang/ar.umd.min.js +1 -1
  35. package/dist/lang/az-latn.umd.min.js +1 -1
  36. package/dist/lang/bg.umd.min.js +1 -1
  37. package/dist/lang/ca.umd.min.js +1 -1
  38. package/dist/lang/cs.umd.min.js +1 -1
  39. package/dist/lang/da.umd.min.js +1 -1
  40. package/dist/lang/de.umd.min.js +1 -1
  41. package/dist/lang/el.umd.min.js +1 -1
  42. package/dist/lang/en-gb.umd.min.js +1 -1
  43. package/dist/lang/en-us.umd.min.js +1 -1
  44. package/dist/lang/eo.umd.min.js +1 -1
  45. package/dist/lang/es.umd.min.js +1 -1
  46. package/dist/lang/et.umd.min.js +1 -1
  47. package/dist/lang/fa-ir.umd.min.js +1 -1
  48. package/dist/lang/fa.umd.min.js +1 -1
  49. package/dist/lang/fi.umd.min.js +1 -1
  50. package/dist/lang/fr.umd.min.js +1 -1
  51. package/dist/lang/gn.umd.min.js +1 -1
  52. package/dist/lang/he.umd.min.js +1 -1
  53. package/dist/lang/hr.umd.min.js +1 -1
  54. package/dist/lang/hu.umd.min.js +1 -1
  55. package/dist/lang/id.umd.min.js +1 -1
  56. package/dist/lang/is.umd.min.js +1 -1
  57. package/dist/lang/it.umd.min.js +1 -1
  58. package/dist/lang/ja.umd.min.js +1 -1
  59. package/dist/lang/km.umd.min.js +1 -1
  60. package/dist/lang/ko-kr.umd.min.js +1 -1
  61. package/dist/lang/kur-ckb.umd.min.js +1 -1
  62. package/dist/lang/lu.umd.min.js +1 -1
  63. package/dist/lang/lv.umd.min.js +1 -1
  64. package/dist/lang/ml.umd.min.js +1 -1
  65. package/dist/lang/ms.umd.min.js +1 -1
  66. package/dist/lang/my.umd.min.js +1 -1
  67. package/dist/lang/nb-no.umd.min.js +1 -1
  68. package/dist/lang/nl.umd.min.js +1 -1
  69. package/dist/lang/pl.umd.min.js +1 -1
  70. package/dist/lang/pt-br.umd.min.js +1 -1
  71. package/dist/lang/pt.umd.min.js +1 -1
  72. package/dist/lang/ro.umd.min.js +1 -1
  73. package/dist/lang/ru.umd.min.js +1 -1
  74. package/dist/lang/sk.umd.min.js +1 -1
  75. package/dist/lang/sl.umd.min.js +1 -1
  76. package/dist/lang/sr.umd.min.js +1 -1
  77. package/dist/lang/sv.umd.min.js +1 -1
  78. package/dist/lang/ta.umd.min.js +1 -1
  79. package/dist/lang/th.umd.min.js +1 -1
  80. package/dist/lang/tr.umd.min.js +1 -1
  81. package/dist/lang/ug.umd.min.js +1 -1
  82. package/dist/lang/uk.umd.min.js +1 -1
  83. package/dist/lang/vi.umd.min.js +1 -1
  84. package/dist/lang/zh-hans.umd.min.js +1 -1
  85. package/dist/lang/zh-hant.umd.min.js +1 -1
  86. package/dist/quasar.addon.css +1 -1
  87. package/dist/quasar.addon.rtl.css +1 -1
  88. package/dist/quasar.common.js +2 -2
  89. package/dist/quasar.css +45 -11
  90. package/dist/quasar.esm.js +2 -2
  91. package/dist/quasar.ie.polyfills.js +1 -1
  92. package/dist/quasar.ie.polyfills.umd.min.js +1 -1
  93. package/dist/quasar.min.css +1 -1
  94. package/dist/quasar.rtl.css +58 -24
  95. package/dist/quasar.rtl.min.css +1 -1
  96. package/dist/quasar.sass +31 -11
  97. package/dist/quasar.styl +31 -11
  98. package/dist/quasar.umd.js +329 -195
  99. package/dist/quasar.umd.min.js +2 -2
  100. package/dist/quasar.umd.modern.js +319 -193
  101. package/dist/quasar.umd.modern.min.js +2 -2
  102. package/dist/types/index.d.ts +32 -12
  103. package/dist/types/utils/date.d.ts +28 -13
  104. package/dist/vetur/quasar-attributes.json +32 -12
  105. package/dist/vetur/quasar-tags.json +8 -3
  106. package/dist/web-types/web-types.json +73 -28
  107. package/package.json +1 -1
  108. package/src/components/checkbox/QCheckbox.js +48 -22
  109. package/src/components/checkbox/QCheckbox.json +17 -0
  110. package/src/components/checkbox/QCheckbox.sass +17 -5
  111. package/src/components/checkbox/QCheckbox.styl +17 -5
  112. package/src/components/field/QField.sass +2 -0
  113. package/src/components/field/QField.styl +2 -0
  114. package/src/components/form/QForm.js +17 -14
  115. package/src/components/input/QInput.js +9 -0
  116. package/src/components/radio/QRadio.js +43 -19
  117. package/src/components/radio/QRadio.json +16 -0
  118. package/src/components/radio/QRadio.sass +17 -5
  119. package/src/components/radio/QRadio.styl +17 -5
  120. package/src/components/select/QSelect.js +3 -2
  121. package/src/components/stepper/QStep.js +1 -1
  122. package/src/components/toggle/QToggle.js +0 -3
  123. package/src/components/toggle/QToggle.json +3 -13
  124. package/src/components/tree/QTree.js +6 -8
  125. package/src/mixins/checkbox.js +4 -0
  126. package/src/mixins/checkbox.json +18 -0
  127. package/src/mixins/validate.js +19 -16
  128. package/src/mixins/virtual-scroll.js +6 -4
  129. package/src/plugins/Meta.js +1 -1
  130. package/src/plugins/Screen.js +15 -9
  131. package/src/utils/date.js +151 -94
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v1.17.7
2
+ * Quasar Framework v1.18.2
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -12,7 +12,7 @@
12
12
 
13
13
  Vue = Vue && Object.prototype.hasOwnProperty.call(Vue, 'default') ? Vue['default'] : Vue;
14
14
 
15
- var version = "1.17.7";
15
+ var version = "1.18.2";
16
16
 
17
17
  /* eslint-disable no-useless-escape */
18
18
 
@@ -644,12 +644,24 @@
644
644
  return
645
645
  }
646
646
 
647
+ var visualViewport = window.visualViewport;
648
+ var getSize = visualViewport === void 0 || client.is.mobile === true
649
+ ? function () { return [
650
+ Math.max(window.innerWidth, document.scrollingElement.clientWidth),
651
+ Math.max(window.innerHeight, document.scrollingElement.clientHeight)
652
+ ]; }
653
+ : function () { return [
654
+ visualViewport.width * visualViewport.scale + window.innerWidth - document.scrollingElement.clientWidth,
655
+ visualViewport.height * visualViewport.scale + window.innerHeight - document.scrollingElement.clientHeight
656
+ ]; };
657
+
658
+ var target = visualViewport || window;
647
659
  var classes = cfg.screen !== void 0 && cfg.screen.bodyClasses === true;
648
660
 
649
661
  var update = function (force) {
650
- var
651
- w = window.innerWidth,
652
- h = window.innerHeight;
662
+ var ref = getSize();
663
+ var w = ref[0];
664
+ var h = ref[1];
653
665
 
654
666
  if (h !== this$1.height) {
655
667
  this$1.height = h;
@@ -707,11 +719,7 @@
707
719
  };
708
720
 
709
721
  var start = function () {
710
- var
711
- style = getComputedStyle(document.body),
712
- target = window.visualViewport !== void 0
713
- ? window.visualViewport
714
- : window;
722
+ var style = getComputedStyle(document.body);
715
723
 
716
724
  // if css props available
717
725
  if (style.getPropertyValue('--q-size-sm')) {
@@ -7542,6 +7550,10 @@
7542
7550
  falseValue: { default: false },
7543
7551
  indeterminateValue: { default: null },
7544
7552
 
7553
+ checkedIcon: String,
7554
+ uncheckedIcon: String,
7555
+ indeterminateIcon: String,
7556
+
7545
7557
  toggleOrder: {
7546
7558
  type: String,
7547
7559
  validator: function (v) { return v === 'tf' || v === 'ft'; }
@@ -7745,33 +7757,57 @@
7745
7757
 
7746
7758
  mixins: [ CheckboxMixin ],
7747
7759
 
7760
+ computed: {
7761
+ computedIcon: function computedIcon () {
7762
+ return this.isTrue === true
7763
+ ? this.checkedIcon
7764
+ : (this.isIndeterminate === true
7765
+ ? this.indeterminateIcon
7766
+ : this.uncheckedIcon
7767
+ )
7768
+ }
7769
+ },
7770
+
7748
7771
  methods: {
7749
7772
  __getInner: function __getInner (h) {
7750
- return [
7751
- h('div', {
7752
- staticClass: 'q-checkbox__bg absolute'
7753
- }, [
7754
- h('svg', {
7755
- staticClass: 'q-checkbox__svg fit absolute-full',
7756
- attrs: { focusable: 'false' /* needed for IE11 */, viewBox: '0 0 24 24', 'aria-hidden': 'true' }
7773
+ return this.computedIcon !== void 0
7774
+ ? [
7775
+ h('div', {
7776
+ key: 'icon',
7777
+ staticClass: 'q-checkbox__icon-container absolute flex flex-center no-wrap'
7757
7778
  }, [
7758
- h('path', {
7759
- staticClass: 'q-checkbox__truthy',
7760
- attrs: {
7761
- fill: 'none',
7762
- d: 'M1.73,12.91 8.1,19.28 22.79,4.59'
7763
- }
7764
- }),
7765
-
7766
- h('path', {
7767
- staticClass: 'q-checkbox__indet',
7768
- attrs: {
7769
- d: 'M4,14H20V10H4'
7770
- }
7779
+ h(QIcon, {
7780
+ staticClass: 'q-checkbox__icon',
7781
+ props: { name: this.computedIcon }
7771
7782
  })
7772
7783
  ])
7773
- ])
7774
- ]
7784
+ ]
7785
+ : [
7786
+ h('div', {
7787
+ key: 'svg',
7788
+ staticClass: 'q-checkbox__bg absolute'
7789
+ }, [
7790
+ h('svg', {
7791
+ staticClass: 'q-checkbox__svg fit absolute-full',
7792
+ attrs: { focusable: 'false' /* needed for IE11 */, viewBox: '0 0 24 24', 'aria-hidden': 'true' }
7793
+ }, [
7794
+ h('path', {
7795
+ staticClass: 'q-checkbox__truthy',
7796
+ attrs: {
7797
+ fill: 'none',
7798
+ d: 'M1.73,12.91 8.1,19.28 22.79,4.59'
7799
+ }
7800
+ }),
7801
+
7802
+ h('path', {
7803
+ staticClass: 'q-checkbox__indet',
7804
+ attrs: {
7805
+ d: 'M4,14H20V10H4'
7806
+ }
7807
+ })
7808
+ ])
7809
+ ])
7810
+ ]
7775
7811
  }
7776
7812
  },
7777
7813
 
@@ -11787,8 +11823,8 @@
11787
11823
  days = '(' + dateLocale.days.join('|') + ')',
11788
11824
  key = mask + days;
11789
11825
 
11790
- if (regexStore[key] !== void 0) {
11791
- return regexStore[key]
11826
+ if (regexStore[ key ] !== void 0) {
11827
+ return regexStore[ key ]
11792
11828
  }
11793
11829
 
11794
11830
  var
@@ -11906,7 +11942,7 @@
11906
11942
 
11907
11943
  default:
11908
11944
  index--;
11909
- if (match[0] === '[') {
11945
+ if (match[ 0 ] === '[') {
11910
11946
  match = match.substring(1, match.length - 1);
11911
11947
  }
11912
11948
  return match.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
@@ -11914,7 +11950,7 @@
11914
11950
  });
11915
11951
 
11916
11952
  var res = { map: map, regex: new RegExp('^' + regexText) };
11917
- regexStore[key] = res;
11953
+ regexStore[ key ] = res;
11918
11954
 
11919
11955
  return res
11920
11956
  }
@@ -11944,25 +11980,18 @@
11944
11980
  function applyYearMonthDayChange (date, mod, sign) {
11945
11981
  var
11946
11982
  year = date.getFullYear(),
11947
- month = date.getMonth(),
11948
- day = date.getDate();
11983
+ month = date.getMonth();
11949
11984
 
11950
- if (mod.years !== void 0) {
11951
- year += sign * mod.years;
11952
- }
11953
- else if (mod.year !== void 0) {
11985
+ var day = date.getDate();
11986
+
11987
+ if (mod.year !== void 0) {
11954
11988
  year += sign * mod.year;
11989
+ delete mod.year;
11955
11990
  }
11956
11991
 
11957
- if (mod.months !== void 0) {
11958
- month += sign * mod.months;
11959
- }
11960
- else if (mod.month !== void 0) {
11992
+ if (mod.month !== void 0) {
11961
11993
  month += sign * mod.month;
11962
- }
11963
-
11964
- if (mod.days !== void 0) {
11965
- day += sign * mod.days;
11994
+ delete mod.month;
11966
11995
  }
11967
11996
 
11968
11997
  date.setDate(1);
@@ -11970,74 +11999,110 @@
11970
11999
 
11971
12000
  date.setFullYear(year);
11972
12001
  date.setMonth(month);
11973
- date.setDate(day);
12002
+ date.setDate(Math.min(day, daysInMonth(date)));
12003
+
12004
+ if (mod.date !== void 0) {
12005
+ date.setDate(date.getDate() + sign * mod.date);
12006
+ delete mod.date;
12007
+ }
11974
12008
 
11975
12009
  return date
11976
12010
  }
11977
12011
 
11978
- var yearMonDay = [ 'years', 'year', 'months', 'month', 'days' ];
12012
+ function applyYearMonthDay (date, mod, middle) {
12013
+ var
12014
+ year = mod.year !== void 0 ? mod.year : date[ ("get" + middle + "FullYear") ](),
12015
+ month = mod.month !== void 0 ? mod.month - 1 : date[ ("get" + middle + "Month") ](),
12016
+ maxDay = (new Date(year, month + 1, 0)).getDate(),
12017
+ day = Math.min(maxDay, mod.date !== void 0 ? mod.date : date[ ("get" + middle + "Date") ]());
12018
+
12019
+ date[ ("set" + middle + "Date") ](1);
12020
+ date[ ("set" + middle + "Month") ](2);
12021
+
12022
+ date[ ("set" + middle + "FullYear") ](year);
12023
+ date[ ("set" + middle + "Month") ](month);
12024
+ date[ ("set" + middle + "Date") ](day);
12025
+
12026
+ delete mod.year;
12027
+ delete mod.month;
12028
+ delete mod.date;
12029
+
12030
+ return date
12031
+ }
11979
12032
 
11980
- function getChange (date, mod, sign) {
12033
+ function getChange (date, rawMod, sign) {
11981
12034
  var
12035
+ mod = normalizeMod(rawMod),
11982
12036
  d = new Date(date),
11983
- t = (
11984
- mod.years !== void 0 || mod.year !== void 0 ||
11985
- mod.months !== void 0 || mod.month !== void 0 ||
11986
- mod.days !== void 0
11987
- )
11988
- ? applyYearMonthDayChange(d, mod, sign)
12037
+ t = mod.year !== void 0 || mod.month !== void 0 || mod.date !== void 0
12038
+ ? applyYearMonthDayChange(d, mod, sign) // removes year/month/day
11989
12039
  : d;
11990
12040
 
11991
12041
  for (var key in mod) {
11992
- if (yearMonDay.includes(key) === false) {
11993
- var op = capitalize(key);
11994
- t[("set" + op)](t[("get" + op)]() + sign * mod[key]);
11995
- }
12042
+ var op = capitalize(key);
12043
+ t[ ("set" + op) ](t[ ("get" + op) ]() + sign * mod[ key ]);
11996
12044
  }
11997
12045
 
11998
12046
  return t
11999
12047
  }
12000
12048
 
12001
- function applyYearMonthDay (date, mod, middle) {
12002
- var
12003
- year = mod.year !== void 0
12004
- ? mod.year
12005
- : (mod.years !== void 0 ? mod.years : date[("get" + middle + "FullYear")]()),
12006
- month = mod.month !== void 0
12007
- ? mod.month - 1
12008
- : (mod.months !== void 0 ? mod.months : date[("get" + middle + "Month")]()),
12009
- maxDay = (new Date(year, month + 1, 0)).getDate(),
12010
- day = Math.min(maxDay, mod.date !== void 0 ? mod.date : date[("get" + middle + "Date")]());
12049
+ function normalizeMod (mod) {
12050
+ var acc = Object.assign({}, mod);
12011
12051
 
12012
- date[("set" + middle + "Date")](1);
12013
- date[("set" + middle + "Month")](2);
12052
+ if (mod.years !== void 0) {
12053
+ acc.year = mod.years;
12054
+ delete acc.years;
12055
+ }
12014
12056
 
12015
- date[("set" + middle + "FullYear")](year);
12016
- date[("set" + middle + "Month")](month);
12017
- date[("set" + middle + "Date")](day);
12057
+ if (mod.months !== void 0) {
12058
+ acc.month = mod.months;
12059
+ delete acc.months;
12060
+ }
12018
12061
 
12019
- return date
12020
- }
12062
+ if (mod.days !== void 0) {
12063
+ acc.date = mod.days;
12064
+ delete acc.days;
12065
+ }
12066
+ if (mod.day !== void 0) {
12067
+ acc.date = mod.day;
12068
+ delete acc.day;
12069
+ }
12070
+
12071
+ if (mod.hour !== void 0) {
12072
+ acc.hours = mod.hour;
12073
+ delete acc.hour;
12074
+ }
12075
+
12076
+ if (mod.minute !== void 0) {
12077
+ acc.minutes = mod.minute;
12078
+ delete acc.minute;
12079
+ }
12080
+
12081
+ if (mod.second !== void 0) {
12082
+ acc.seconds = mod.second;
12083
+ delete acc.second;
12084
+ }
12021
12085
 
12022
- var yearMonDayAdj = [ 'years', 'year', 'months', 'month', 'days' ];
12086
+ if (mod.millisecond !== void 0) {
12087
+ acc.milliseconds = mod.millisecond;
12088
+ delete acc.millisecond;
12089
+ }
12090
+
12091
+ return acc
12092
+ }
12023
12093
 
12024
- function adjustDate (date, mod, utc) {
12094
+ function adjustDate (date, rawMod, utc) {
12025
12095
  var
12096
+ mod = normalizeMod(rawMod),
12026
12097
  middle = utc === true ? 'UTC' : '',
12027
12098
  d = new Date(date),
12028
- t = (
12029
- mod.years !== void 0 || mod.year !== void 0 ||
12030
- mod.months !== void 0 || mod.month !== void 0 ||
12031
- mod.days !== void 0
12032
- )
12033
- ? applyYearMonthDay(d, mod, middle)
12099
+ t = mod.year !== void 0 || mod.month !== void 0 || mod.date !== void 0
12100
+ ? applyYearMonthDay(d, mod, middle) // removes year/month/day
12034
12101
  : d;
12035
12102
 
12036
12103
  for (var key in mod) {
12037
- if (yearMonDayAdj.includes(key) === false) {
12038
- var op = key.charAt(0).toUpperCase() + key.slice(1);
12039
- t[("set" + middle + op)](mod[key]);
12040
- }
12104
+ var op = key.charAt(0).toUpperCase() + key.slice(1);
12105
+ t[ ("set" + middle + op) ](mod[ key ]);
12041
12106
  }
12042
12107
 
12043
12108
  return t
@@ -12110,7 +12175,7 @@
12110
12175
  var tzString = '';
12111
12176
 
12112
12177
  if (map.X !== void 0 || map.x !== void 0) {
12113
- var stamp = parseInt(match[map.X !== void 0 ? map.X : map.x], 10);
12178
+ var stamp = parseInt(match[ map.X !== void 0 ? map.X : map.x ], 10);
12114
12179
 
12115
12180
  if (isNaN(stamp) === true || stamp < 0) {
12116
12181
  return date
@@ -12128,28 +12193,28 @@
12128
12193
  }
12129
12194
  else {
12130
12195
  if (map.YYYY !== void 0) {
12131
- date.year = parseInt(match[map.YYYY], 10);
12196
+ date.year = parseInt(match[ map.YYYY ], 10);
12132
12197
  }
12133
12198
  else if (map.YY !== void 0) {
12134
- var y = parseInt(match[map.YY], 10);
12199
+ var y = parseInt(match[ map.YY ], 10);
12135
12200
  date.year = y < 0 ? y : 2000 + y;
12136
12201
  }
12137
12202
 
12138
12203
  if (map.M !== void 0) {
12139
- date.month = parseInt(match[map.M], 10);
12204
+ date.month = parseInt(match[ map.M ], 10);
12140
12205
  if (date.month < 1 || date.month > 12) {
12141
12206
  return date
12142
12207
  }
12143
12208
  }
12144
12209
  else if (map.MMM !== void 0) {
12145
- date.month = monthsShort.indexOf(match[map.MMM]) + 1;
12210
+ date.month = monthsShort.indexOf(match[ map.MMM ]) + 1;
12146
12211
  }
12147
12212
  else if (map.MMMM !== void 0) {
12148
- date.month = months.indexOf(match[map.MMMM]) + 1;
12213
+ date.month = months.indexOf(match[ map.MMMM ]) + 1;
12149
12214
  }
12150
12215
 
12151
12216
  if (map.D !== void 0) {
12152
- date.day = parseInt(match[map.D], 10);
12217
+ date.day = parseInt(match[ map.D ], 10);
12153
12218
 
12154
12219
  if (date.year === null || date.month === null || date.day < 1) {
12155
12220
  return date
@@ -12165,14 +12230,14 @@
12165
12230
  }
12166
12231
 
12167
12232
  if (map.H !== void 0) {
12168
- date.hour = parseInt(match[map.H], 10) % 24;
12233
+ date.hour = parseInt(match[ map.H ], 10) % 24;
12169
12234
  }
12170
12235
  else if (map.h !== void 0) {
12171
- date.hour = parseInt(match[map.h], 10) % 12;
12236
+ date.hour = parseInt(match[ map.h ], 10) % 12;
12172
12237
  if (
12173
- (map.A && match[map.A] === 'PM') ||
12174
- (map.a && match[map.a] === 'pm') ||
12175
- (map.aa && match[map.aa] === 'p.m.')
12238
+ (map.A && match[ map.A ] === 'PM') ||
12239
+ (map.a && match[ map.a ] === 'pm') ||
12240
+ (map.aa && match[ map.aa ] === 'p.m.')
12176
12241
  ) {
12177
12242
  date.hour += 12;
12178
12243
  }
@@ -12180,20 +12245,20 @@
12180
12245
  }
12181
12246
 
12182
12247
  if (map.m !== void 0) {
12183
- date.minute = parseInt(match[map.m], 10) % 60;
12248
+ date.minute = parseInt(match[ map.m ], 10) % 60;
12184
12249
  }
12185
12250
 
12186
12251
  if (map.s !== void 0) {
12187
- date.second = parseInt(match[map.s], 10) % 60;
12252
+ date.second = parseInt(match[ map.s ], 10) % 60;
12188
12253
  }
12189
12254
 
12190
12255
  if (map.S !== void 0) {
12191
- date.millisecond = parseInt(match[map.S], 10) * Math.pow( 10, (3 - match[map.S].length) );
12256
+ date.millisecond = parseInt(match[ map.S ], 10) * Math.pow( 10, (3 - match[ map.S ].length) );
12192
12257
  }
12193
12258
 
12194
12259
  if (map.Z !== void 0 || map.ZZ !== void 0) {
12195
- tzString = (map.Z !== void 0 ? match[map.Z].replace(':', '') : match[map.ZZ]);
12196
- date.timezoneOffset = (tzString[0] === '+' ? -1 : 1) * (60 * tzString.slice(1, 3) + 1 * tzString.slice(3, 5));
12260
+ tzString = (map.Z !== void 0 ? match[ map.Z ].replace(':', '') : match[ map.ZZ ]);
12261
+ date.timezoneOffset = (tzString[ 0 ] === '+' ? -1 : 1) * (60 * tzString.slice(1, 3) + 1 * tzString.slice(3, 5));
12197
12262
  }
12198
12263
  }
12199
12264
 
@@ -12275,17 +12340,24 @@
12275
12340
 
12276
12341
  switch (unit) {
12277
12342
  case 'year':
12278
- t[(prefix + "Month")](0);
12343
+ case 'years':
12344
+ t[ (prefix + "Month") ](0);
12279
12345
  case 'month':
12280
- t[(prefix + "Date")](1);
12346
+ case 'months':
12347
+ t[ (prefix + "Date") ](1);
12281
12348
  case 'day':
12282
- t[(prefix + "Hours")](0);
12349
+ case 'days':
12350
+ case 'date':
12351
+ t[ (prefix + "Hours") ](0);
12283
12352
  case 'hour':
12284
- t[(prefix + "Minutes")](0);
12353
+ case 'hours':
12354
+ t[ (prefix + "Minutes") ](0);
12285
12355
  case 'minute':
12286
- t[(prefix + "Seconds")](0);
12356
+ case 'minutes':
12357
+ t[ (prefix + "Seconds") ](0);
12287
12358
  case 'second':
12288
- t[(prefix + "Milliseconds")](0);
12359
+ case 'seconds':
12360
+ t[ (prefix + "Milliseconds") ](0);
12289
12361
  }
12290
12362
  return t
12291
12363
  }
@@ -12297,17 +12369,24 @@
12297
12369
 
12298
12370
  switch (unit) {
12299
12371
  case 'year':
12300
- t[(prefix + "Month")](11);
12372
+ case 'years':
12373
+ t[ (prefix + "Month") ](11);
12301
12374
  case 'month':
12302
- t[(prefix + "Date")](daysInMonth(t));
12375
+ case 'months':
12376
+ t[ (prefix + "Date") ](daysInMonth(t));
12303
12377
  case 'day':
12304
- t[(prefix + "Hours")](23);
12378
+ case 'days':
12379
+ case 'date':
12380
+ t[ (prefix + "Hours") ](23);
12305
12381
  case 'hour':
12306
- t[(prefix + "Minutes")](59);
12382
+ case 'hours':
12383
+ t[ (prefix + "Minutes") ](59);
12307
12384
  case 'minute':
12308
- t[(prefix + "Seconds")](59);
12385
+ case 'minutes':
12386
+ t[ (prefix + "Seconds") ](59);
12309
12387
  case 'second':
12310
- t[(prefix + "Milliseconds")](999);
12388
+ case 'seconds':
12389
+ t[ (prefix + "Milliseconds") ](999);
12311
12390
  }
12312
12391
  return t
12313
12392
  }
@@ -12344,21 +12423,28 @@
12344
12423
 
12345
12424
  switch (unit) {
12346
12425
  case 'years':
12426
+ case 'year':
12347
12427
  return (t.getFullYear() - sub.getFullYear())
12348
12428
 
12349
12429
  case 'months':
12430
+ case 'month':
12350
12431
  return (t.getFullYear() - sub.getFullYear()) * 12 + t.getMonth() - sub.getMonth()
12351
12432
 
12352
12433
  case 'days':
12434
+ case 'day':
12435
+ case 'date':
12353
12436
  return getDiff(startOfDate(t, 'day'), startOfDate(sub, 'day'), MILLISECONDS_IN_DAY)
12354
12437
 
12355
12438
  case 'hours':
12439
+ case 'hour':
12356
12440
  return getDiff(startOfDate(t, 'hour'), startOfDate(sub, 'hour'), MILLISECONDS_IN_HOUR)
12357
12441
 
12358
12442
  case 'minutes':
12443
+ case 'minute':
12359
12444
  return getDiff(startOfDate(t, 'minute'), startOfDate(sub, 'minute'), MILLISECONDS_IN_MINUTE)
12360
12445
 
12361
12446
  case 'seconds':
12447
+ case 'second':
12362
12448
  return getDiff(startOfDate(t, 'second'), startOfDate(sub, 'second'), 1000)
12363
12449
  }
12364
12450
  }
@@ -12404,26 +12490,33 @@
12404
12490
 
12405
12491
  switch (unit) {
12406
12492
  case 'second':
12493
+ case 'seconds':
12407
12494
  if (t.getSeconds() !== d.getSeconds()) {
12408
12495
  return false
12409
12496
  }
12410
12497
  case 'minute': // intentional fall-through
12498
+ case 'minutes':
12411
12499
  if (t.getMinutes() !== d.getMinutes()) {
12412
12500
  return false
12413
12501
  }
12414
12502
  case 'hour': // intentional fall-through
12503
+ case 'hours':
12415
12504
  if (t.getHours() !== d.getHours()) {
12416
12505
  return false
12417
12506
  }
12418
12507
  case 'day': // intentional fall-through
12508
+ case 'days':
12509
+ case 'date':
12419
12510
  if (t.getDate() !== d.getDate()) {
12420
12511
  return false
12421
12512
  }
12422
12513
  case 'month': // intentional fall-through
12514
+ case 'months':
12423
12515
  if (t.getMonth() !== d.getMonth()) {
12424
12516
  return false
12425
12517
  }
12426
12518
  case 'year': // intentional fall-through
12519
+ case 'years':
12427
12520
  if (t.getFullYear() !== d.getFullYear()) {
12428
12521
  return false
12429
12522
  }
@@ -12481,12 +12574,12 @@
12481
12574
 
12482
12575
  // Month Short Name: Jan, Feb, ...
12483
12576
  MMM: function MMM (date, dateLocale) {
12484
- return dateLocale.monthsShort[date.getMonth()]
12577
+ return dateLocale.monthsShort[ date.getMonth() ]
12485
12578
  },
12486
12579
 
12487
12580
  // Month Name: January, February, ...
12488
12581
  MMMM: function MMMM (date, dateLocale) {
12489
- return dateLocale.months[date.getMonth()]
12582
+ return dateLocale.months[ date.getMonth() ]
12490
12583
  },
12491
12584
 
12492
12585
  // Quarter: 1, 2, 3, 4
@@ -12536,12 +12629,12 @@
12536
12629
 
12537
12630
  // Day of week: Sun, Mon, ...
12538
12631
  ddd: function ddd (date, dateLocale) {
12539
- return dateLocale.daysShort[date.getDay()]
12632
+ return dateLocale.daysShort[ date.getDay() ]
12540
12633
  },
12541
12634
 
12542
12635
  // Day of week: Sunday, Monday, ...
12543
12636
  dddd: function dddd (date, dateLocale) {
12544
- return dateLocale.days[date.getDay()]
12637
+ return dateLocale.days[ date.getDay() ]
12545
12638
  },
12546
12639
 
12547
12640
  // Day of ISO week: 1, 2, ..., 7
@@ -12690,7 +12783,7 @@
12690
12783
  token,
12691
12784
  function (match, text) { return (
12692
12785
  match in formatter
12693
- ? formatter[match](date, locale, __forcedYear, __forcedTimezoneOffset)
12786
+ ? formatter[ match ](date, locale, __forcedYear, __forcedTimezoneOffset)
12694
12787
  : (text === void 0 ? match : text.split('\\]').join(']'))
12695
12788
  ); }
12696
12789
  )
@@ -18220,7 +18313,14 @@
18220
18313
  else if (this.isDirty === false) {
18221
18314
  this.isDirty = true;
18222
18315
 
18223
- if (this.hasRules === true && this.lazyRules !== 'ondemand') {
18316
+ if (
18317
+ this.hasActiveRules === true &&
18318
+ this.lazyRules !== 'ondemand' &&
18319
+ // Don't re-trigger if it's already in progress;
18320
+ // It might mean that focus switched to submit btn and
18321
+ // QForm's submit() has been called already (ENTER key)
18322
+ this.innerLoading === false
18323
+ ) {
18224
18324
  this.debouncedValidate();
18225
18325
  }
18226
18326
  }
@@ -18234,12 +18334,15 @@
18234
18334
 
18235
18335
  computed: {
18236
18336
  hasRules: function hasRules () {
18237
- return this.disable !== true &&
18238
- this.rules !== void 0 &&
18337
+ return this.rules !== void 0 &&
18239
18338
  this.rules !== null &&
18240
18339
  this.rules.length > 0
18241
18340
  },
18242
18341
 
18342
+ hasActiveRules: function hasActiveRules () {
18343
+ return this.disable !== true && this.hasRules === true
18344
+ },
18345
+
18243
18346
  hasError: function hasError () {
18244
18347
  return this.error === true || this.innerError === true
18245
18348
  },
@@ -18280,11 +18383,11 @@
18280
18383
  var this$1 = this;
18281
18384
  if ( val === void 0 ) val = this.value;
18282
18385
 
18283
- if (this.hasRules !== true) {
18386
+ if (this.hasActiveRules !== true) {
18284
18387
  return true
18285
18388
  }
18286
18389
 
18287
- this.validateIndex++;
18390
+ var index = ++this.validateIndex;
18288
18391
 
18289
18392
  if (this.innerLoading !== true && this.lazyRules !== true) {
18290
18393
  this.isDirty = true;
@@ -18337,31 +18440,24 @@
18337
18440
  this.innerLoading = true;
18338
18441
  }
18339
18442
 
18340
- var index = this.validateIndex;
18341
-
18342
18443
  return Promise.all(promises).then(
18343
18444
  function (res) {
18344
- if (index !== this$1.validateIndex) {
18345
- return true
18346
- }
18347
-
18348
18445
  if (res === void 0 || Array.isArray(res) === false || res.length === 0) {
18349
- update(false);
18446
+ index === this$1.validateIndex && update(false);
18350
18447
  return true
18351
18448
  }
18352
18449
 
18353
18450
  var msg = res.find(function (r) { return r === false || typeof r === 'string'; });
18354
- update(msg !== void 0, msg);
18451
+ index === this$1.validateIndex && update(msg !== void 0, msg);
18355
18452
  return msg === void 0
18356
18453
  },
18357
18454
  function (e) {
18358
18455
  if (index === this$1.validateIndex) {
18359
18456
  console.error(e);
18360
18457
  update(true);
18361
- return false
18362
18458
  }
18363
18459
 
18364
- return true
18460
+ return false
18365
18461
  }
18366
18462
  )
18367
18463
  },
@@ -18376,7 +18472,7 @@
18376
18472
 
18377
18473
  __validateIfNeeded: function __validateIfNeeded (changedRules) {
18378
18474
  if (
18379
- this.hasRules === true &&
18475
+ this.hasActiveRules === true &&
18380
18476
  this.lazyRules !== 'ondemand' &&
18381
18477
  (this.isDirty === true || (this.lazyRules !== true && changedRules !== true))
18382
18478
  ) {
@@ -19805,7 +19901,7 @@
19805
19901
  ? shouldFocus
19806
19902
  : this.noErrorFocus !== true;
19807
19903
 
19808
- this.validateIndex++;
19904
+ var index = ++this.validateIndex;
19809
19905
 
19810
19906
  var components = this.getValidationComponents().filter(function (c) { return c.disable !== true; });
19811
19907
 
@@ -19821,7 +19917,7 @@
19821
19917
  promises.push(
19822
19918
  valid.then(
19823
19919
  function (valid) { return ({ valid: valid, comp: comp }); },
19824
- function (error) { return ({ valid: false, comp: comp, error: error }); }
19920
+ function (err) { return ({ valid: false, comp: comp, err: err }); }
19825
19921
  )
19826
19922
  );
19827
19923
  }
@@ -19851,21 +19947,22 @@
19851
19947
  return Promise.resolve(true)
19852
19948
  }
19853
19949
 
19854
- var index = this.validateIndex;
19855
-
19856
19950
  return Promise.all(promises).then(
19857
19951
  function (res) {
19858
- if (index === this$1.validateIndex) {
19859
- var errors = res.filter(function (r) { return r.valid !== true; });
19952
+ var errors = res.filter(function (r) { return r.valid !== true; });
19860
19953
 
19861
- if (errors.length === 0) {
19862
- emit(true);
19863
- return true
19864
- }
19954
+ if (errors.length === 0) {
19955
+ index === this$1.validateIndex && emit(true);
19956
+ return true
19957
+ }
19865
19958
 
19866
- var ref = errors[0];
19867
- var valid = ref.valid;
19868
- var comp = ref.comp;
19959
+ var ref = errors[0];
19960
+ var valid = ref.valid;
19961
+ var comp = ref.comp;
19962
+ var err = ref.err;
19963
+
19964
+ if (index === this$1.validateIndex) {
19965
+ err !== void 0 && console.error(err);
19869
19966
 
19870
19967
  emit(false, comp);
19871
19968
 
@@ -19876,9 +19973,9 @@
19876
19973
  ) {
19877
19974
  comp.focus();
19878
19975
  }
19879
-
19880
- return false
19881
19976
  }
19977
+
19978
+ return false
19882
19979
  }
19883
19980
  )
19884
19981
  },
@@ -19896,8 +19993,11 @@
19896
19993
 
19897
19994
  evt !== void 0 && stopAndPrevent(evt);
19898
19995
 
19996
+ var index = this.validateIndex + 1;
19997
+
19899
19998
  this.validate().then(function (val) {
19900
- if (val === true) {
19999
+ // if not outdated && validation succeeded
20000
+ if (index === this$1.validateIndex && val === true) {
19901
20001
  if (this$1.qListeners.submit !== void 0) {
19902
20002
  this$1.$emit('submit', evt);
19903
20003
  }
@@ -21412,6 +21512,15 @@
21412
21512
  this.autogrow === true && this.$nextTick(this.__adjustHeight);
21413
21513
  },
21414
21514
 
21515
+ // some browsers lose the native input value
21516
+ // so we need to reattach it dynamically
21517
+ // (like type="password" <-> type="text"; see #12078)
21518
+ type: function type () {
21519
+ if (this.$refs.input) {
21520
+ this.$refs.input.value = this.value;
21521
+ }
21522
+ },
21523
+
21415
21524
  autogrow: function autogrow (autogrow$1) {
21416
21525
  // textarea only
21417
21526
  if (autogrow$1 === true) {
@@ -22632,6 +22741,9 @@
22632
22741
  label: String,
22633
22742
  leftLabel: Boolean,
22634
22743
 
22744
+ checkedIcon: String,
22745
+ uncheckedIcon: String,
22746
+
22635
22747
  color: String,
22636
22748
  keepColor: Boolean,
22637
22749
  dense: Boolean,
@@ -22664,6 +22776,12 @@
22664
22776
  return ("q-radio__inner--" + (this.isTrue === true ? 'truthy' : 'falsy') + color)
22665
22777
  },
22666
22778
 
22779
+ computedIcon: function computedIcon () {
22780
+ return this.isTrue === true
22781
+ ? this.checkedIcon
22782
+ : this.uncheckedIcon
22783
+ },
22784
+
22667
22785
  computedTabindex: function computedTabindex () {
22668
22786
  return this.disable === true ? -1 : this.tabindex || 0
22669
22787
  },
@@ -22717,25 +22835,38 @@
22717
22835
  render: function render (h) {
22718
22836
  var this$1 = this;
22719
22837
 
22720
- var content = [
22721
- h('svg', {
22722
- staticClass: 'q-radio__bg absolute non-selectable',
22723
- attrs: { focusable: 'false' /* needed for IE11 */, viewBox: '0 0 24 24', 'aria-hidden': 'true' }
22724
- }, [
22725
- h('path', {
22726
- attrs: {
22727
- d: 'M12,22a10,10 0 0 1 -10,-10a10,10 0 0 1 10,-10a10,10 0 0 1 10,10a10,10 0 0 1 -10,10m0,-22a12,12 0 0 0 -12,12a12,12 0 0 0 12,12a12,12 0 0 0 12,-12a12,12 0 0 0 -12,-12'
22728
- }
22729
- }),
22838
+ var content = this.computedIcon !== void 0
22839
+ ? [
22840
+ h('div', {
22841
+ key: 'icon',
22842
+ staticClass: 'q-radio__icon-container absolute flex flex-center no-wrap'
22843
+ }, [
22844
+ h(QIcon, {
22845
+ staticClass: 'q-radio__icon',
22846
+ props: { name: this.computedIcon }
22847
+ })
22848
+ ])
22849
+ ]
22850
+ : [
22851
+ h('svg', {
22852
+ key: 'svg',
22853
+ staticClass: 'q-radio__bg absolute non-selectable',
22854
+ attrs: { focusable: 'false' /* needed for IE11 */, viewBox: '0 0 24 24', 'aria-hidden': 'true' }
22855
+ }, [
22856
+ h('path', {
22857
+ attrs: {
22858
+ d: 'M12,22a10,10 0 0 1 -10,-10a10,10 0 0 1 10,-10a10,10 0 0 1 10,10a10,10 0 0 1 -10,10m0,-22a12,12 0 0 0 -12,12a12,12 0 0 0 12,12a12,12 0 0 0 12,-12a12,12 0 0 0 -12,-12'
22859
+ }
22860
+ }),
22730
22861
 
22731
- h('path', {
22732
- staticClass: 'q-radio__check',
22733
- attrs: {
22734
- d: 'M12,6a6,6 0 0 0 -6,6a6,6 0 0 0 6,6a6,6 0 0 0 6,-6a6,6 0 0 0 -6,-6'
22735
- }
22736
- })
22737
- ])
22738
- ];
22862
+ h('path', {
22863
+ staticClass: 'q-radio__check',
22864
+ attrs: {
22865
+ d: 'M12,6a6,6 0 0 0 -6,6a6,6 0 0 0 6,6a6,6 0 0 0 6,-6a6,6 0 0 0 -6,-6'
22866
+ }
22867
+ })
22868
+ ])
22869
+ ];
22739
22870
 
22740
22871
  this.disable !== true && this.__injectFormInput(
22741
22872
  content,
@@ -22792,9 +22923,6 @@
22792
22923
 
22793
22924
  props: {
22794
22925
  icon: String,
22795
- checkedIcon: String,
22796
- uncheckedIcon: String,
22797
- indeterminateIcon: String,
22798
22926
 
22799
22927
  iconColor: String
22800
22928
  },
@@ -26578,7 +26706,9 @@
26578
26706
 
26579
26707
  this.__scrollViewSize = scrollViewSize;
26580
26708
 
26581
- var multiplier = 1 + this.virtualScrollSliceRatioBefore + this.virtualScrollSliceRatioAfter;
26709
+ var virtualScrollSliceRatioBefore = parseFloat(this.virtualScrollSliceRatioBefore) || 0;
26710
+ var virtualScrollSliceRatioAfter = parseFloat(this.virtualScrollSliceRatioAfter) || 0;
26711
+ var multiplier = 1 + virtualScrollSliceRatioBefore + virtualScrollSliceRatioAfter;
26582
26712
  var view = scrollViewSize === void 0 || scrollViewSize <= 0
26583
26713
  ? 1
26584
26714
  : Math.ceil(scrollViewSize / this.virtualScrollItemSizeComputed);
@@ -26590,9 +26720,9 @@
26590
26720
 
26591
26721
  this.virtualScrollSliceSizeComputed = {
26592
26722
  total: Math.ceil(baseSize * multiplier),
26593
- start: Math.ceil(baseSize * this.virtualScrollSliceRatioBefore),
26594
- center: Math.ceil(baseSize * (0.5 + this.virtualScrollSliceRatioBefore)),
26595
- end: Math.ceil(baseSize * (1 + this.virtualScrollSliceRatioBefore)),
26723
+ start: Math.ceil(baseSize * virtualScrollSliceRatioBefore),
26724
+ center: Math.ceil(baseSize * (0.5 + virtualScrollSliceRatioBefore)),
26725
+ end: Math.ceil(baseSize * (1 + virtualScrollSliceRatioBefore)),
26596
26726
  view: view
26597
26727
  };
26598
26728
  },
@@ -26969,7 +27099,7 @@
26969
27099
  var optionEls = ref$1.optionEls;
26970
27100
 
26971
27101
  return this.options.slice(from, to).map(function (opt, i) {
26972
- var disable = this$1.isOptionDisabled(opt) === true;
27102
+ var disable = this$1.isOptionDisabled(opt);
26973
27103
  var index = from + i;
26974
27104
 
26975
27105
  var itemProps = {
@@ -27067,7 +27197,13 @@
27067
27197
  // returns method to tell if an option is disabled;
27068
27198
  // takes into account 'option-disable' prop
27069
27199
  isOptionDisabled: function isOptionDisabled () {
27070
- return this.__getPropValueFn('optionDisable', 'disable')
27200
+ var fn = this.__getPropValueFn('optionDisable', 'disable');
27201
+ return function () {
27202
+ var args = [], len = arguments.length;
27203
+ while ( len-- ) args[ len ] = arguments[ len ];
27204
+
27205
+ return fn.apply(null, args) === true;
27206
+ }
27071
27207
  },
27072
27208
 
27073
27209
  inputControlEvents: function inputControlEvents () {
@@ -31330,7 +31466,7 @@
31330
31466
  onEvents: function onEvents () {
31331
31467
  return this.isActive !== true ||
31332
31468
  this.stepper.vertical !== true ||
31333
- (this.$q.platform.is.ios !== true && this.$q.platform.is.safari !== true && this.$q.platform.is.ie !== true)
31469
+ (this.$q.platform.is.ios !== true && this.$q.platform.is.chrome === true)
31334
31470
  ? Object.assign({}, this.qListeners)
31335
31471
  : Object.assign({}, this.qListeners, {scroll: this.__keepScroll})
31336
31472
  }
@@ -35328,14 +35464,12 @@
35328
35464
  __onClick: function __onClick (node, meta, e, keyboard) {
35329
35465
  keyboard !== true && this.__blur(meta.key);
35330
35466
 
35331
- if (this.hasSelection) {
35332
- if (meta.selectable) {
35333
- if (this.noSelectionUnset === false) {
35334
- this.$emit('update:selected', meta.key !== this.selected ? meta.key : null);
35335
- }
35336
- else if (meta.key !== this.selected) {
35337
- this.$emit('update:selected', meta.key || null);
35338
- }
35467
+ if (this.hasSelection && meta.selectable) {
35468
+ if (this.noSelectionUnset === false) {
35469
+ this.$emit('update:selected', meta.key !== this.selected ? meta.key : null);
35470
+ }
35471
+ else if (meta.key !== this.selected) {
35472
+ this.$emit('update:selected', meta.key || null);
35339
35473
  }
35340
35474
  }
35341
35475
  else {
@@ -39682,7 +39816,7 @@
39682
39816
  function getAttr (seed) {
39683
39817
  return function (att) {
39684
39818
  var val = seed[att];
39685
- return att + (val !== void 0 ? ("=\"" + val + "\"") : '')
39819
+ return att + (val !== true && val !== void 0 ? ("=\"" + val + "\"") : '')
39686
39820
  }
39687
39821
  }
39688
39822