@dimailn/vuetify 2.7.2-alpha14 → 2.7.2-alpha16

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 (93) hide show
  1. package/dist/vuetify.js +196 -161
  2. package/dist/vuetify.js.map +1 -1
  3. package/dist/vuetify.min.css +1 -1
  4. package/dist/vuetify.min.js +2 -2
  5. package/es5/components/VAppBar/VAppBar.js +7 -12
  6. package/es5/components/VAppBar/VAppBar.js.map +1 -1
  7. package/es5/components/VCheckbox/VSimpleCheckbox.js +66 -35
  8. package/es5/components/VCheckbox/VSimpleCheckbox.js.map +1 -1
  9. package/es5/components/VDataTable/VDataTable.js +1 -1
  10. package/es5/components/VDataTable/VDataTable.js.map +1 -1
  11. package/es5/components/VDataTable/VDataTableHeader.js +4 -3
  12. package/es5/components/VDataTable/VDataTableHeader.js.map +1 -1
  13. package/es5/components/VDataTable/VDataTableHeaderDesktop.js +4 -2
  14. package/es5/components/VDataTable/VDataTableHeaderDesktop.js.map +1 -1
  15. package/es5/components/VDataTable/mixins/header.js +1 -1
  16. package/es5/components/VDataTable/mixins/header.js.map +1 -1
  17. package/es5/components/VGrid/VContainer.js +3 -1
  18. package/es5/components/VGrid/VContainer.js.map +1 -1
  19. package/es5/components/VItemGroup/VItem.js +17 -18
  20. package/es5/components/VItemGroup/VItem.js.map +1 -1
  21. package/es5/components/VSelect/VSelectList.js +1 -1
  22. package/es5/components/VSelect/VSelectList.js.map +1 -1
  23. package/es5/components/VTextField/VTextField.js +4 -1
  24. package/es5/components/VTextField/VTextField.js.map +1 -1
  25. package/es5/components/VToolbar/VToolbar.js +2 -3
  26. package/es5/components/VToolbar/VToolbar.js.map +1 -1
  27. package/es5/directives/intersect/index.js +20 -7
  28. package/es5/directives/intersect/index.js.map +1 -1
  29. package/es5/directives/mutate/index.js +13 -13
  30. package/es5/directives/mutate/index.js.map +1 -1
  31. package/es5/directives/resize/index.js +8 -8
  32. package/es5/directives/resize/index.js.map +1 -1
  33. package/es5/directives/scroll/index.js +10 -9
  34. package/es5/directives/scroll/index.js.map +1 -1
  35. package/es5/directives/touch/index.js +4 -4
  36. package/es5/directives/touch/index.js.map +1 -1
  37. package/es5/framework.js +1 -1
  38. package/es5/mixins/selectable/index.js +3 -1
  39. package/es5/mixins/selectable/index.js.map +1 -1
  40. package/lib/components/VAppBar/VAppBar.js +7 -11
  41. package/lib/components/VAppBar/VAppBar.js.map +1 -1
  42. package/lib/components/VCheckbox/VSimpleCheckbox.js +72 -36
  43. package/lib/components/VCheckbox/VSimpleCheckbox.js.map +1 -1
  44. package/lib/components/VDataTable/VDataTable.js +1 -1
  45. package/lib/components/VDataTable/VDataTable.js.map +1 -1
  46. package/lib/components/VDataTable/VDataTableHeader.js +4 -3
  47. package/lib/components/VDataTable/VDataTableHeader.js.map +1 -1
  48. package/lib/components/VDataTable/VDataTableHeaderDesktop.js +3 -1
  49. package/lib/components/VDataTable/VDataTableHeaderDesktop.js.map +1 -1
  50. package/lib/components/VDataTable/mixins/header.js +1 -1
  51. package/lib/components/VDataTable/mixins/header.js.map +1 -1
  52. package/lib/components/VGrid/VContainer.js +3 -1
  53. package/lib/components/VGrid/VContainer.js.map +1 -1
  54. package/lib/components/VItemGroup/VItem.js +20 -18
  55. package/lib/components/VItemGroup/VItem.js.map +1 -1
  56. package/lib/components/VSelect/VSelectList.js +1 -1
  57. package/lib/components/VSelect/VSelectList.js.map +1 -1
  58. package/lib/components/VTextField/VTextField.js +4 -1
  59. package/lib/components/VTextField/VTextField.js.map +1 -1
  60. package/lib/components/VToolbar/VToolbar.js +4 -3
  61. package/lib/components/VToolbar/VToolbar.js.map +1 -1
  62. package/lib/directives/intersect/index.js +20 -7
  63. package/lib/directives/intersect/index.js.map +1 -1
  64. package/lib/directives/mutate/index.js +13 -13
  65. package/lib/directives/mutate/index.js.map +1 -1
  66. package/lib/directives/resize/index.js +8 -8
  67. package/lib/directives/resize/index.js.map +1 -1
  68. package/lib/directives/scroll/index.js +10 -9
  69. package/lib/directives/scroll/index.js.map +1 -1
  70. package/lib/directives/touch/index.js +4 -4
  71. package/lib/directives/touch/index.js.map +1 -1
  72. package/lib/framework.js +1 -1
  73. package/lib/mixins/selectable/index.js +3 -1
  74. package/lib/mixins/selectable/index.js.map +1 -1
  75. package/package.json +1 -1
  76. package/src/components/VAppBar/VAppBar.ts +11 -13
  77. package/src/components/VCheckbox/VSimpleCheckbox.ts +84 -42
  78. package/src/components/VCheckbox/__tests__/VSimpleCheckbox.spec.ts +46 -13
  79. package/src/components/VDataTable/VDataTable.ts +1 -1
  80. package/src/components/VDataTable/VDataTableHeader.ts +5 -4
  81. package/src/components/VDataTable/VDataTableHeaderDesktop.ts +1 -1
  82. package/src/components/VDataTable/mixins/header.ts +4 -4
  83. package/src/components/VGrid/VContainer.ts +1 -1
  84. package/src/components/VItemGroup/VItem.ts +25 -23
  85. package/src/components/VSelect/VSelectList.ts +1 -1
  86. package/src/components/VTextField/VTextField.ts +3 -2
  87. package/src/components/VToolbar/VToolbar.ts +4 -5
  88. package/src/directives/intersect/index.ts +81 -42
  89. package/src/directives/mutate/index.ts +58 -49
  90. package/src/directives/resize/index.ts +33 -14
  91. package/src/directives/scroll/index.ts +36 -20
  92. package/src/directives/touch/index.ts +37 -27
  93. package/src/mixins/selectable/index.ts +3 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mixins/selectable/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Components\nimport VInput from '../../components/VInput'\n\n// Mixins\nimport Rippleable from '../rippleable'\nimport Comparable from '../comparable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport {h} from 'vue'\n\nexport function prevent (e: Event) {\n e.preventDefault()\n}\n\n/* @vue/component */\nexport default mixins(\n VInput,\n Rippleable,\n Comparable\n).extend({\n name: 'selectable',\n\n props: {\n id: String,\n value: null as any,\n falseValue: null as any,\n trueValue: null as any,\n multiple: {\n type: Boolean,\n default: null,\n },\n label: String,\n },\n\n data () {\n return {\n hasColor: this.modelValue,\n lazyValue: this.modelValue,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (!this.isActive) return undefined\n if (this.color) return this.color\n if (this.isDark && !this.appIsDark) return 'white'\n return 'primary'\n },\n isMultiple (): boolean {\n return this.multiple === true || (this.multiple === null && Array.isArray(this.internalValue))\n },\n isActive (): boolean {\n const value = this.value\n const input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) return false\n\n return input.some(item => this.valueComparator(item, value))\n }\n\n if (this.trueValue === undefined || this.falseValue === undefined) {\n return value\n ? this.valueComparator(value, input)\n : Boolean(input)\n }\n\n return this.valueComparator(input, this.trueValue)\n },\n isDirty (): boolean {\n return this.isActive\n },\n rippleState (): string | undefined {\n return !this.isDisabled && !this.validationState\n ? undefined\n : this.validationState\n },\n },\n\n watch: {\n modelValue (val) {\n this.lazyValue = val\n this.hasColor = val\n },\n },\n\n methods: {\n genLabel () {\n const label = VInput.methods.genLabel.call(this)\n\n if (!label) return label\n\n // Label shouldn't cause the input to focus\n label!.onClick = prevent\n\n return label\n },\n genInput (type: string, attrs: object) {\n return h('input', {\n ...Object.assign({\n 'aria-checked': this.isActive.toString(),\n disabled: this.isDisabled,\n id: this.computedId,\n role: type,\n type,\n }, attrs),\n value: this.value,\n checked: this.isActive,\n onBlur: this.onBlur,\n onChange: this.onChange,\n onFocus: this.onFocus,\n onKeydown: this.onKeydown,\n onClick: prevent,\n ref: 'input'\n })\n },\n onClick (e: Event) {\n this.onChange()\n this.$emit('click', e)\n },\n onChange () {\n if (!this.isInteractive) return\n\n const value = this.value\n let input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) {\n input = []\n }\n\n const length = input.length\n\n input = input.filter((item: any) => !this.valueComparator(item, value))\n\n if (input.length === length) {\n input.push(value)\n }\n } else if (this.trueValue !== undefined && this.falseValue !== undefined) {\n input = this.valueComparator(input, this.trueValue) ? this.falseValue : this.trueValue\n } else if (value) {\n input = this.valueComparator(input, value) ? null : value\n } else {\n input = !input\n }\n\n this.validate(true, input)\n this.internalValue = input\n this.hasColor = input\n },\n onFocus (e: FocusEvent) {\n this.isFocused = true\n this.$emit('focus', e)\n },\n onBlur (e: FocusEvent) {\n this.isFocused = false\n this.$emit('blur', e)\n },\n /** @abstract */\n onKeydown (e: Event) {},\n },\n})\n"],"sourceRoot":"","file":"index.js"}
1
+ {"version":3,"sources":["../../../src/mixins/selectable/index.ts"],"names":[],"mappings":"AAAA;AACA,OAAO,MAAP,MAAmB,yBAAnB,C,CAEA;;AACA,OAAO,UAAP,MAAuB,eAAvB;AACA,OAAO,UAAP,MAAuB,eAAvB,C,CAEA;;AACA,OAAO,MAAP,MAAmB,mBAAnB;AACA,SAAS,CAAT,QAAkB,KAAlB;AAEA,OAAM,SAAU,OAAV,CAAmB,CAAnB,EAA2B;AAC/B,EAAA,CAAC,CAAC,cAAF,GAD+B,CAE/B;;AACA,EAAA,CAAC,CAAC,eAAF;AACD;AAED;;AACA,eAAe,MAAM,CACnB,MADmB,EAEnB,UAFmB,EAGnB,UAHmB,CAAN,CAIb,MAJa,CAIN;AACP,EAAA,IAAI,EAAE,YADC;AAGP,EAAA,KAAK,EAAE;AACL,IAAA,EAAE,EAAE,MADC;AAEL,IAAA,KAAK,EAAE,IAFF;AAGL,IAAA,UAAU,EAAE,IAHP;AAIL,IAAA,SAAS,EAAE,IAJN;AAKL,IAAA,QAAQ,EAAE;AACR,MAAA,IAAI,EAAE,OADE;AAER,MAAA,OAAO,EAAE;AAFD,KALL;AASL,IAAA,KAAK,EAAE;AATF,GAHA;;AAeP,EAAA,IAAI,GAAA;AACF,WAAO;AACL,MAAA,QAAQ,EAAE,KAAK,UADV;AAEL,MAAA,SAAS,EAAE,KAAK;AAFX,KAAP;AAID,GApBM;;AAsBP,EAAA,QAAQ,EAAE;AACR,IAAA,aAAa,GAAA;AACX,UAAI,CAAC,KAAK,QAAV,EAAoB,OAAO,SAAP;AACpB,UAAI,KAAK,KAAT,EAAgB,OAAO,KAAK,KAAZ;AAChB,UAAI,KAAK,MAAL,IAAe,CAAC,KAAK,SAAzB,EAAoC,OAAO,OAAP;AACpC,aAAO,SAAP;AACD,KANO;;AAOR,IAAA,UAAU,GAAA;AACR,aAAO,KAAK,QAAL,KAAkB,IAAlB,IAA2B,KAAK,QAAL,KAAkB,IAAlB,IAA0B,KAAK,CAAC,OAAN,CAAc,KAAK,aAAnB,CAA5D;AACD,KATO;;AAUR,IAAA,QAAQ,GAAA;AACN,YAAM,KAAK,GAAG,KAAK,KAAnB;AACA,YAAM,KAAK,GAAG,KAAK,aAAnB;;AAEA,UAAI,KAAK,UAAT,EAAqB;AACnB,YAAI,CAAC,KAAK,CAAC,OAAN,CAAc,KAAd,CAAL,EAA2B,OAAO,KAAP;AAE3B,eAAO,KAAK,CAAC,IAAN,CAAW,IAAI,IAAI,KAAK,eAAL,CAAqB,IAArB,EAA2B,KAA3B,CAAnB,CAAP;AACD;;AAED,UAAI,KAAK,SAAL,KAAmB,SAAnB,IAAgC,KAAK,UAAL,KAAoB,SAAxD,EAAmE;AACjE,eAAO,KAAK,GACR,KAAK,eAAL,CAAqB,KAArB,EAA4B,KAA5B,CADQ,GAER,OAAO,CAAC,KAAD,CAFX;AAGD;;AAED,aAAO,KAAK,eAAL,CAAqB,KAArB,EAA4B,KAAK,SAAjC,CAAP;AACD,KA3BO;;AA4BR,IAAA,OAAO,GAAA;AACL,aAAO,KAAK,QAAZ;AACD,KA9BO;;AA+BR,IAAA,WAAW,GAAA;AACT,aAAO,CAAC,KAAK,UAAN,IAAoB,CAAC,KAAK,eAA1B,GACH,SADG,GAEH,KAAK,eAFT;AAGD;;AAnCO,GAtBH;AA4DP,EAAA,KAAK,EAAE;AACL,IAAA,UAAU,CAAE,GAAF,EAAK;AACb,WAAK,SAAL,GAAiB,GAAjB;AACA,WAAK,QAAL,GAAgB,GAAhB;AACD;;AAJI,GA5DA;AAmEP,EAAA,OAAO,EAAE;AACP,IAAA,QAAQ,GAAA;AACN,YAAM,KAAK,GAAG,MAAM,CAAC,OAAP,CAAe,QAAf,CAAwB,IAAxB,CAA6B,IAA7B,CAAd;AAEA,UAAI,CAAC,KAAL,EAAY,OAAO,KAAP,CAHN,CAKN;;AACA,MAAA,KAAM,CAAC,OAAP,GAAiB,OAAjB;AAEA,aAAO,KAAP;AACD,KAVM;;AAWP,IAAA,QAAQ,CAAE,IAAF,EAAgB,KAAhB,EAA6B;AACnC,aAAO,CAAC,CAAC,OAAD,EAAU,EAChB,GAAG,MAAM,CAAC,MAAP,CAAc;AACf,0BAAgB,KAAK,QAAL,CAAc,QAAd,EADD;AAEf,UAAA,QAAQ,EAAE,KAAK,UAFA;AAGf,UAAA,EAAE,EAAE,KAAK,UAHM;AAIf,UAAA,IAAI,EAAE,IAJS;AAKf,UAAA;AALe,SAAd,EAMA,KANA,CADa;AAQhB,QAAA,KAAK,EAAE,KAAK,KARI;AAShB,QAAA,OAAO,EAAE,KAAK,QATE;AAUhB,QAAA,MAAM,EAAE,KAAK,MAVG;AAWhB,QAAA,QAAQ,EAAE,KAAK,QAXC;AAYhB,QAAA,OAAO,EAAE,KAAK,OAZE;AAahB,QAAA,SAAS,EAAE,KAAK,SAbA;AAchB,QAAA,OAAO,EAAE,OAdO;AAehB,QAAA,GAAG,EAAE;AAfW,OAAV,CAAR;AAiBD,KA7BM;;AA8BP,IAAA,OAAO,CAAE,CAAF,EAAU;AACf,WAAK,QAAL;AACA,WAAK,KAAL,CAAW,OAAX,EAAoB,CAApB;AACD,KAjCM;;AAkCP,IAAA,QAAQ,GAAA;AACN,UAAI,CAAC,KAAK,aAAV,EAAyB;AAEzB,YAAM,KAAK,GAAG,KAAK,KAAnB;AACA,UAAI,KAAK,GAAG,KAAK,aAAjB;;AAEA,UAAI,KAAK,UAAT,EAAqB;AACnB,YAAI,CAAC,KAAK,CAAC,OAAN,CAAc,KAAd,CAAL,EAA2B;AACzB,UAAA,KAAK,GAAG,EAAR;AACD;;AAED,cAAM,MAAM,GAAG,KAAK,CAAC,MAArB;AAEA,QAAA,KAAK,GAAG,KAAK,CAAC,MAAN,CAAc,IAAD,IAAe,CAAC,KAAK,eAAL,CAAqB,IAArB,EAA2B,KAA3B,CAA7B,CAAR;;AAEA,YAAI,KAAK,CAAC,MAAN,KAAiB,MAArB,EAA6B;AAC3B,UAAA,KAAK,CAAC,IAAN,CAAW,KAAX;AACD;AACF,OAZD,MAYO,IAAI,KAAK,SAAL,KAAmB,SAAnB,IAAgC,KAAK,UAAL,KAAoB,SAAxD,EAAmE;AACxE,QAAA,KAAK,GAAG,KAAK,eAAL,CAAqB,KAArB,EAA4B,KAAK,SAAjC,IAA8C,KAAK,UAAnD,GAAgE,KAAK,SAA7E;AACD,OAFM,MAEA,IAAI,KAAJ,EAAW;AAChB,QAAA,KAAK,GAAG,KAAK,eAAL,CAAqB,KAArB,EAA4B,KAA5B,IAAqC,IAArC,GAA4C,KAApD;AACD,OAFM,MAEA;AACL,QAAA,KAAK,GAAG,CAAC,KAAT;AACD;;AAED,WAAK,QAAL,CAAc,IAAd,EAAoB,KAApB;AACA,WAAK,aAAL,GAAqB,KAArB;AACA,WAAK,QAAL,GAAgB,KAAhB;AACD,KA/DM;;AAgEP,IAAA,OAAO,CAAE,CAAF,EAAe;AACpB,WAAK,SAAL,GAAiB,IAAjB;AACA,WAAK,KAAL,CAAW,OAAX,EAAoB,CAApB;AACD,KAnEM;;AAoEP,IAAA,MAAM,CAAE,CAAF,EAAe;AACnB,WAAK,SAAL,GAAiB,KAAjB;AACA,WAAK,KAAL,CAAW,MAAX,EAAmB,CAAnB;AACD,KAvEM;;AAwEP;AACA,IAAA,SAAS,CAAE,CAAF,EAAU,CAAI;;AAzEhB;AAnEF,CAJM,CAAf","sourcesContent":["// Components\nimport VInput from '../../components/VInput'\n\n// Mixins\nimport Rippleable from '../rippleable'\nimport Comparable from '../comparable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { h } from 'vue'\n\nexport function prevent (e: Event) {\n e.preventDefault()\n // всплытие провоцирует двойной onChange\n e.stopPropagation()\n}\n\n/* @vue/component */\nexport default mixins(\n VInput,\n Rippleable,\n Comparable\n).extend({\n name: 'selectable',\n\n props: {\n id: String,\n value: null as any,\n falseValue: null as any,\n trueValue: null as any,\n multiple: {\n type: Boolean,\n default: null,\n },\n label: String,\n },\n\n data () {\n return {\n hasColor: this.modelValue,\n lazyValue: this.modelValue,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (!this.isActive) return undefined\n if (this.color) return this.color\n if (this.isDark && !this.appIsDark) return 'white'\n return 'primary'\n },\n isMultiple (): boolean {\n return this.multiple === true || (this.multiple === null && Array.isArray(this.internalValue))\n },\n isActive (): boolean {\n const value = this.value\n const input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) return false\n\n return input.some(item => this.valueComparator(item, value))\n }\n\n if (this.trueValue === undefined || this.falseValue === undefined) {\n return value\n ? this.valueComparator(value, input)\n : Boolean(input)\n }\n\n return this.valueComparator(input, this.trueValue)\n },\n isDirty (): boolean {\n return this.isActive\n },\n rippleState (): string | undefined {\n return !this.isDisabled && !this.validationState\n ? undefined\n : this.validationState\n },\n },\n\n watch: {\n modelValue (val) {\n this.lazyValue = val\n this.hasColor = val\n },\n },\n\n methods: {\n genLabel () {\n const label = VInput.methods.genLabel.call(this)\n\n if (!label) return label\n\n // Label shouldn't cause the input to focus\n label!.onClick = prevent\n\n return label\n },\n genInput (type: string, attrs: object) {\n return h('input', {\n ...Object.assign({\n 'aria-checked': this.isActive.toString(),\n disabled: this.isDisabled,\n id: this.computedId,\n role: type,\n type,\n }, attrs),\n value: this.value,\n checked: this.isActive,\n onBlur: this.onBlur,\n onChange: this.onChange,\n onFocus: this.onFocus,\n onKeydown: this.onKeydown,\n onClick: prevent,\n ref: 'input'\n })\n },\n onClick (e: Event) {\n this.onChange()\n this.$emit('click', e)\n },\n onChange () {\n if (!this.isInteractive) return\n\n const value = this.value\n let input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) {\n input = []\n }\n\n const length = input.length\n\n input = input.filter((item: any) => !this.valueComparator(item, value))\n\n if (input.length === length) {\n input.push(value)\n }\n } else if (this.trueValue !== undefined && this.falseValue !== undefined) {\n input = this.valueComparator(input, this.trueValue) ? this.falseValue : this.trueValue\n } else if (value) {\n input = this.valueComparator(input, value) ? null : value\n } else {\n input = !input\n }\n\n this.validate(true, input)\n this.internalValue = input\n this.hasColor = input\n },\n onFocus (e: FocusEvent) {\n this.isFocused = true\n this.$emit('focus', e)\n },\n onBlur (e: FocusEvent) {\n this.isFocused = false\n this.$emit('blur', e)\n },\n /** @abstract */\n onKeydown (e: Event) {},\n },\n})\n"],"sourceRoot":"","file":"index.js"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dimailn/vuetify",
3
3
  "description": "Vue Material Component Framework",
4
- "version": "2.7.2-alpha14",
4
+ "version": "2.7.2-alpha16",
5
5
  "author": {
6
6
  "name": "John Leider",
7
7
  "email": "john@vuetifyjs.com"
@@ -1,4 +1,3 @@
1
- import {h} from 'vue'
2
1
  // Styles
3
2
  import './VAppBar.sass'
4
3
 
@@ -16,10 +15,11 @@ import Toggleable from '../../mixins/toggleable'
16
15
 
17
16
  // Utilities
18
17
  import { convertToUnit } from '../../util/helpers'
18
+ import { mergeProps, withDirectives } from 'vue'
19
19
  import mixins from '../../util/mixins'
20
20
 
21
21
  // Types
22
- import { VNode } from 'vue'
22
+ import type { VNode } from 'vue'
23
23
 
24
24
  const baseMixins = mixins(
25
25
  VToolbar,
@@ -239,8 +239,8 @@ export default baseMixins.extend({
239
239
  genBackground () {
240
240
  const render = VToolbar.methods.genBackground.call(this)
241
241
 
242
- render.data = this._b(render.data || {}, render.tag!, {
243
- style: { opacity: this.computedOpacity },
242
+ render.props = mergeProps(render.props || {}, {
243
+ style: { opacity: this.computedOpacity }
244
244
  })
245
245
 
246
246
  return render
@@ -268,19 +268,17 @@ export default baseMixins.extend({
268
268
  },
269
269
 
270
270
  render (): VNode {
271
- const render = VToolbar.render.call(this, h)
272
-
273
- render.data = render.data || {}
271
+ const render = VToolbar.render.call(this)
274
272
 
275
273
  if (this.canScroll) {
276
- render.data.directives = render.data.directives || []
277
- render.data.directives.push({
278
- arg: this.scrollTarget,
279
- name: 'scroll',
280
- value: this.onScroll,
281
- })
274
+ render.key = 'v-app-bar-scroll'
275
+ return withDirectives(render, [
276
+ [Scroll, this.onScroll, this.scrollTarget],
277
+ ])
282
278
  }
283
279
 
280
+ render.key = 'v-app-bar-no-scroll'
281
+
284
282
  return render
285
283
  },
286
284
  })
@@ -2,8 +2,7 @@ import './VSimpleCheckbox.sass'
2
2
 
3
3
  import Ripple from '../../directives/ripple'
4
4
 
5
- import { VNode, VNodeDirective, h } from 'vue'
6
- import {defineComponent} from 'vue'
5
+ import { VNode, h, defineComponent, withDirectives } from 'vue'
7
6
 
8
7
  import { VIcon } from '../VIcon'
9
8
 
@@ -18,8 +17,6 @@ import { wrapInArray } from '../../util/helpers'
18
17
  export default defineComponent({
19
18
  name: 'v-simple-checkbox',
20
19
 
21
- functional: true,
22
-
23
20
  directives: {
24
21
  Ripple,
25
22
  },
@@ -32,7 +29,7 @@ export default defineComponent({
32
29
  type: Boolean,
33
30
  default: true,
34
31
  },
35
- value: Boolean,
32
+ modelValue: Boolean,
36
33
  indeterminate: Boolean,
37
34
  indeterminateIcon: {
38
35
  type: String,
@@ -48,49 +45,94 @@ export default defineComponent({
48
45
  },
49
46
  },
50
47
 
48
+ emits: ['input', 'update:modelValue'],
49
+
50
+ methods: {
51
+ getIcon (): string {
52
+ const { indeterminate, modelValue, indeterminateIcon, onIcon, offIcon } = this.$props
53
+
54
+ if (indeterminate) return indeterminateIcon
55
+ if (modelValue) return onIcon
56
+ return offIcon
57
+ },
58
+
59
+ createIcon (): VNode {
60
+ const { modelValue, disabled, dark, light, color } = this.$props
61
+
62
+ return h(
63
+ VIcon,
64
+ Colorable.methods.setTextColor(modelValue && color, {
65
+ disabled,
66
+ dark,
67
+ light,
68
+ }),
69
+ () => this.getIcon()
70
+ )
71
+ },
72
+
73
+ createRipple (): VNode | null {
74
+ const { ripple, disabled, color } = this.$props
75
+
76
+ if (!ripple || disabled) return null
77
+
78
+ return withDirectives(
79
+ h(
80
+ 'div',
81
+ Colorable.methods.setTextColor(color, {
82
+ class: 'v-input--selection-controls__ripple',
83
+ })
84
+ ),
85
+ [
86
+ [Ripple, { center: true }],
87
+ ]
88
+ )
89
+ },
90
+
91
+ handleClick (e: MouseEvent): void {
92
+ e.stopPropagation()
93
+
94
+ if (this.$props.disabled) return
95
+
96
+ const newValue = !this.modelValue
97
+ const attrs = this.$attrs
98
+
99
+
100
+ this.$emit("input", newValue);
101
+ this.$emit('update:modelValue', newValue)
102
+ },
103
+
104
+ createChildren (): VNode[] {
105
+ const children = [this.createIcon()]
106
+
107
+ const ripple = this.createRipple()
108
+ if (ripple) {
109
+ children.push(ripple)
110
+ }
111
+
112
+ return children
113
+ },
114
+ },
115
+
51
116
  render (): VNode {
52
- const props = this.$props
117
+ const { disabled } = this.$props
53
118
  const data = this.$attrs
54
119
 
55
- const children = []
56
- let icon = props.offIcon
57
- if (props.indeterminate) icon = props.indeterminateIcon
58
- else if (props.value) icon = props.onIcon
59
-
60
- children.push(h(VIcon, Colorable.methods.setTextColor(props.value && props.color, {
61
- disabled: props.disabled,
62
- dark: props.dark,
63
- light: props.light
64
- }), icon))
65
-
66
- if (props.ripple && !props.disabled) {
67
- const ripple = h('div', Colorable.methods.setTextColor(props.color, {
68
- class: 'v-input--selection-controls__ripple',
69
- directives: [{
70
- def: Ripple,
71
- name: 'ripple',
72
- value: { center: true },
73
- }] as VNodeDirective[],
74
- }))
75
-
76
- children.push(ripple)
77
- }
78
-
79
- return h('div',
120
+ return h(
121
+ 'div',
80
122
  mergeData(data, {
81
123
  class: {
82
124
  'v-simple-checkbox': true,
83
- 'v-simple-checkbox--disabled': props.disabled,
84
- },
85
- onClick: (e: MouseEvent) => {
86
- e.stopPropagation()
87
-
88
- if (data.on && data.on.input && !props.disabled) {
89
- data.onInput && data.onInput(!props.value)
90
- }
125
+ 'v-simple-checkbox--disabled': disabled,
91
126
  },
92
- }), [
93
- h('div', { class: 'v-input--selection-controls__input' }, children),
94
- ])
127
+ onClick: this.handleClick,
128
+ }),
129
+ [
130
+ h(
131
+ 'div',
132
+ { class: 'v-input--selection-controls__input' },
133
+ this.createChildren()
134
+ )
135
+ ]
136
+ )
95
137
  },
96
138
  })
@@ -1,32 +1,65 @@
1
1
  import {
2
2
  mount,
3
- Wrapper,
4
- MountOptions,
3
+ VueWrapper,
5
4
  } from '@vue/test-utils'
6
5
  import VSimpleCheckbox from '../VSimpleCheckbox'
7
6
 
8
7
  describe('VSimpleCheckbox.ts', () => {
9
8
  type Instance = InstanceType<typeof VSimpleCheckbox>
10
- let mountFunction: (options?: MountOptions<Instance>) => Wrapper<Instance>
9
+ let mountFunction: (options?: any) => VueWrapper<Instance>
10
+
11
11
  beforeEach(() => {
12
- mountFunction = (options?: MountOptions<Instance>) => {
13
- return mount(VSimpleCheckbox, options)
12
+ mountFunction = (options = {}) => {
13
+ return mount(VSimpleCheckbox, {
14
+ global: {
15
+ stubs: {
16
+ VIcon: {
17
+ template: '<span class="v-icon"></span>',
18
+ },
19
+ },
20
+ },
21
+ ...options,
22
+ })
14
23
  }
15
24
  })
16
25
 
17
- it('should pass down listeners', () => {
18
- const mouseleave = jest.fn()
26
+ it('should render simple checkbox', () => {
19
27
  const wrapper = mountFunction({
20
- propsData: { disabled: true },
21
- listeners: {
22
- mouseleave,
23
- },
28
+ props: { modelValue: false },
29
+ })
30
+
31
+ expect(wrapper.find('.v-simple-checkbox').exists()).toBe(true)
32
+ expect(wrapper.find('.v-input--selection-controls__input').exists()).toBe(true)
33
+ })
34
+
35
+ it('should emit update:modelValue event on click', async () => {
36
+ const wrapper = mountFunction({
37
+ props: { modelValue: false },
24
38
  })
25
39
 
26
40
  const element = wrapper.find('.v-simple-checkbox')
41
+ await element.trigger('click')
42
+
43
+ expect(wrapper.emitted()['update:modelValue']).toBeTruthy()
44
+ expect(wrapper.emitted()['update:modelValue'][0]).toEqual([true])
45
+ })
27
46
 
28
- element.trigger('mouseleave')
47
+ it('should not emit update:modelValue when disabled', async () => {
48
+ const wrapper = mountFunction({
49
+ props: { modelValue: false, disabled: true },
50
+ })
51
+
52
+ const element = wrapper.find('.v-simple-checkbox')
53
+ await element.trigger('click')
54
+
55
+ expect(wrapper.emitted()['update:modelValue']).toBeFalsy()
56
+ })
57
+
58
+ it('should apply disabled class when disabled', () => {
59
+ const wrapper = mountFunction({
60
+ props: { disabled: true },
61
+ })
29
62
 
30
- expect(mouseleave).toHaveBeenCalledTimes(1)
63
+ expect(wrapper.find('.v-simple-checkbox--disabled').exists()).toBe(true)
31
64
  })
32
65
  })
@@ -511,7 +511,7 @@ export default mixins(
511
511
  isMobile: this.isMobile,
512
512
  }) : () => h(VSimpleCheckbox, {
513
513
  class: 'v-data-table__checkbox',
514
- value: data.isSelected,
514
+ modelValue: data.isSelected,
515
515
  disabled: !this.isSelectable(item),
516
516
  color: this.checkboxColor ?? '',
517
517
  onInput: (val: boolean) => data.select(val),
@@ -20,8 +20,6 @@ import {defineComponent, h} from 'vue'
20
20
  export default defineComponent({
21
21
  name: 'v-data-table-header',
22
22
 
23
- functional: true,
24
-
25
23
  props: {
26
24
  ...header.props,
27
25
  mobile: Boolean,
@@ -29,12 +27,15 @@ export default defineComponent({
29
27
 
30
28
  render () {
31
29
  const props = this.$props
32
- let data = this.$attrs
30
+ let data = {
31
+ ...this.$attrs,
32
+ ...props,
33
+ }
33
34
 
34
35
  // dedupeModelListeners(data)
35
36
  const children = rebuildSlots(this.$slots, h)
36
37
 
37
- if (this.mobile) {
38
+ if (props.mobile) {
38
39
  return h(VDataTableHeaderMobile, data, children)
39
40
  } else {
40
41
  return h(VDataTableHeaderDesktop, data, children)
@@ -110,7 +110,7 @@ export default mixins(header).extend({
110
110
  return h('thead', {
111
111
  class: 'v-data-table-header',
112
112
  }, [
113
- h('tr', this.headers.map(header => this.genHeader(header))),
113
+ h('tr', this.headers?.map(header => this.genHeader(header)) || []),
114
114
  ])
115
115
  },
116
116
  })
@@ -3,18 +3,18 @@ import VIcon from '../../VIcon'
3
3
  import VSimpleCheckbox from '../../VCheckbox/VSimpleCheckbox'
4
4
  import ripple from '../../../directives/ripple'
5
5
 
6
- import {defineComponent, h} from 'vue'
6
+ import { defineComponent, h } from 'vue'
7
7
  import { PropValidator } from 'vue/types/options'
8
8
  import mixins from '../../../util/mixins'
9
9
  import { DataOptions, DataTableHeader } from 'vuetify/types'
10
10
 
11
11
  type VDataTableInstance = InstanceType<typeof VDataTable>
12
12
 
13
- interface options extends Vue {
13
+ interface HeaderOptions {
14
14
  dataTable: VDataTableInstance
15
15
  }
16
16
 
17
- export default mixins<options>().extend({
17
+ export default mixins<HeaderOptions>().extend({
18
18
  // https://github.com/vuejs/vue/issues/6872
19
19
  directives: {
20
20
  ripple,
@@ -53,7 +53,7 @@ export default mixins<options>().extend({
53
53
  methods: {
54
54
  genSelectAll () {
55
55
  const data = {
56
- value: this.everyItem,
56
+ modelValue: this.everyItem,
57
57
  indeterminate: !this.everyItem && this.someItems,
58
58
  color: this.checkboxColor ?? '',
59
59
  onInput: (v: boolean) => this.$emit('toggle-select-all', v)
@@ -60,7 +60,7 @@ export default defineComponent({
60
60
  'container--fluid': this.fluid,
61
61
  }).concat(classes || []).concat('container'),
62
62
  }),
63
- this.$slots.default()
63
+ this.$slots.default?.()
64
64
  )
65
65
  },
66
66
  })
@@ -7,10 +7,9 @@ import { factory as GroupableFactory } from '../../mixins/groupable'
7
7
  // Utilities
8
8
  import mixins from '../../util/mixins'
9
9
  import { consoleWarn } from '../../util/console'
10
+ import { defineComponent, mergeProps } from "vue"
10
11
 
11
- // Types
12
- import {defineComponent} from 'vue'
13
- import { VNode, ScopedSlotChildren } from 'vue/types/vnode'
12
+ import type { VNode } from 'vue'
14
13
 
15
14
  /* @vue/component */
16
15
  export const BaseItem = defineComponent({
@@ -32,42 +31,45 @@ export const BaseItem = defineComponent({
32
31
  },
33
32
  },
34
33
 
35
- render (): VNode {
34
+ render (): VNode | null {
36
35
  if (!this.$slots.default) {
37
36
  consoleWarn('v-item is missing a default scopedSlot', this)
38
-
39
- return null as any
37
+ return null
40
38
  }
41
39
 
42
- let element: VNode | ScopedSlotChildren
40
+ const slotContent = this.$slots.default({
41
+ active: this.isActive,
42
+ toggle: this.toggle,
43
+ })
43
44
 
44
- /* istanbul ignore else */
45
- if (this.$slots.default) {
46
- element = this.$slots.default({
47
- active: this.isActive,
48
- toggle: this.toggle,
49
- })
45
+ if (!slotContent || slotContent.length === 0) {
46
+ consoleWarn('v-item slot returned empty content', this)
47
+ return null
50
48
  }
51
49
 
52
- if (Array.isArray(element) && element.length === 1) {
53
- element = element[0]
54
- }
50
+ let element = slotContent[0]
55
51
 
56
- if (!element || Array.isArray(element) || !element.tag) {
57
- consoleWarn('v-item should only contain a single element', this)
52
+ if (!element) {
53
+ consoleWarn('v-item should contain at least one element', this)
54
+ return null
55
+ }
58
56
 
59
- return element as any
57
+ if (!element.type) {
58
+ consoleWarn('v-item should only contain valid VNode elements', this)
59
+ return element
60
60
  }
61
61
 
62
- element.data = this._b(element.data || {}, element.tag!, {
62
+ element.props = mergeProps(element.props || {}, {
63
63
  class: {
64
64
  [this.activeClass]: this.isActive,
65
- 'v-item--disabled': this.disabled,
66
- },
65
+ "v-item--disabled": this.disabled
66
+ }
67
67
  })
68
68
 
69
69
  if (this.disabled) {
70
- element.data.attrs = { ...element.data.attrs, tabindex: -1 }
70
+ element.props = mergeProps(element.props || {}, {
71
+ tabindex: -1
72
+ })
71
73
  }
72
74
 
73
75
  return element
@@ -90,7 +90,7 @@ export default mixins(Colorable, Themeable).extend({
90
90
  return h(VListItemAction, [
91
91
  h(VSimpleCheckbox, {
92
92
  color: this.color,
93
- value: inputValue,
93
+ modelValue: inputValue,
94
94
  ripple: false,
95
95
  onInput: () => this.$emit('select', item)
96
96
  }),
@@ -355,6 +355,7 @@ export default baseMixins.extend({
355
355
  if (!this.showLabel) return null
356
356
 
357
357
  const data = {
358
+ ref: "label",
358
359
  absolute: true,
359
360
  color: this.validationState,
360
361
  dark: this.dark,
@@ -500,8 +501,8 @@ export default baseMixins.extend({
500
501
  setLabelWidth () {
501
502
  if (!this.outlined) return
502
503
 
503
- this.labelWidth = this.$refs.label
504
- ? Math.min(this.$refs.label.scrollWidth * 0.75 + 6, (this.$el as HTMLElement).offsetWidth - 24)
504
+ this.labelWidth = this.$refs?.label?.$el
505
+ ? Math.min(this.$refs?.label?.$el.scrollWidth * 0.75 + 6, (this.$el as HTMLElement).offsetWidth - 24)
505
506
  : 0
506
507
  },
507
508
  setPrefixWidth () {
@@ -1,4 +1,4 @@
1
- import {h} from 'vue'
1
+ import { h } from 'vue'
2
2
  // Styles
3
3
  import './VToolbar.sass'
4
4
 
@@ -156,13 +156,12 @@ export default defineComponent({
156
156
  const children = [this.genContent()]
157
157
  const data = this.setBackgroundColor(this.color, {
158
158
  class: this.classes,
159
- style: this.styles,
160
- on: this.$listeners,
159
+ style: this.styles
161
160
  })
162
161
 
163
162
  if (this.isExtended) children.push(this.genExtension())
164
163
  if (this.src || this.$slots.img) children.unshift(this.genBackground())
165
164
 
166
- return h(this.tag, data, children)
167
- },
165
+ return h(this.tag, {...this.attrs$, ...data}, children)
166
+ }
168
167
  })