@dimailn/vuetify 2.7.2-alpha29 → 2.7.2-alpha31

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 (95) hide show
  1. package/dist/vuetify.js +166 -78
  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/VBreadcrumbs/VBreadcrumbs.js +8 -6
  6. package/es5/components/VBreadcrumbs/VBreadcrumbs.js.map +1 -1
  7. package/es5/components/VBreadcrumbs/VBreadcrumbsItem.js +4 -0
  8. package/es5/components/VBreadcrumbs/VBreadcrumbsItem.js.map +1 -1
  9. package/es5/components/VCarousel/VCarousel.js +14 -2
  10. package/es5/components/VCarousel/VCarousel.js.map +1 -1
  11. package/es5/components/VDialog/VDialog.js +47 -26
  12. package/es5/components/VDialog/VDialog.js.map +1 -1
  13. package/es5/components/VFileInput/VFileInput.js +50 -28
  14. package/es5/components/VFileInput/VFileInput.js.map +1 -1
  15. package/es5/components/VPagination/VPagination.js +15 -18
  16. package/es5/components/VPagination/VPagination.js.map +1 -1
  17. package/es5/components/VRangeSlider/VRangeSlider.js +57 -32
  18. package/es5/components/VRangeSlider/VRangeSlider.js.map +1 -1
  19. package/es5/components/VSubheader/VSubheader.js +1 -1
  20. package/es5/components/VSubheader/VSubheader.js.map +1 -1
  21. package/es5/components/VTreeview/VTreeview.js +26 -13
  22. package/es5/components/VTreeview/VTreeview.js.map +1 -1
  23. package/es5/components/VTreeview/VTreeviewNode.js +0 -2
  24. package/es5/components/VTreeview/VTreeviewNode.js.map +1 -1
  25. package/es5/components/VVirtualScroll/VVirtualScroll.js.map +1 -1
  26. package/es5/framework.js +1 -1
  27. package/lib/components/VBreadcrumbs/VBreadcrumbs.js +7 -5
  28. package/lib/components/VBreadcrumbs/VBreadcrumbs.js.map +1 -1
  29. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.js +4 -0
  30. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.js.map +1 -1
  31. package/lib/components/VCarousel/VCarousel.js +14 -2
  32. package/lib/components/VCarousel/VCarousel.js.map +1 -1
  33. package/lib/components/VDialog/VDialog.js +9 -2
  34. package/lib/components/VDialog/VDialog.js.map +1 -1
  35. package/lib/components/VFileInput/VFileInput.js +43 -26
  36. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  37. package/lib/components/VPagination/VPagination.js +15 -19
  38. package/lib/components/VPagination/VPagination.js.map +1 -1
  39. package/lib/components/VRangeSlider/VRangeSlider.js +16 -4
  40. package/lib/components/VRangeSlider/VRangeSlider.js.map +1 -1
  41. package/lib/components/VSubheader/VSubheader.js +1 -1
  42. package/lib/components/VSubheader/VSubheader.js.map +1 -1
  43. package/lib/components/VTreeview/VTreeview.js +15 -7
  44. package/lib/components/VTreeview/VTreeview.js.map +1 -1
  45. package/lib/components/VTreeview/VTreeviewNode.js +0 -2
  46. package/lib/components/VTreeview/VTreeviewNode.js.map +1 -1
  47. package/lib/components/VVirtualScroll/VVirtualScroll.js.map +1 -1
  48. package/lib/framework.js +1 -1
  49. package/package.json +1 -1
  50. package/src/components/VBottomNavigation/__tests__/VBottomNavigation.spec.ts +43 -37
  51. package/src/components/VBottomNavigation/__tests__/__snapshots__/VBottomNavigation.spec.ts.snap +11 -10
  52. package/src/components/VBreadcrumbs/VBreadcrumbs.ts +8 -4
  53. package/src/components/VBreadcrumbs/VBreadcrumbsItem.ts +4 -0
  54. package/src/components/VBreadcrumbs/__tests__/VBreadcrumbs.spec.ts +125 -10
  55. package/src/components/VBreadcrumbs/__tests__/VBreadcrumbsItem.spec.ts +10 -6
  56. package/src/components/VBtnToggle/__tests__/VBtnToggle.spec.ts +10 -6
  57. package/src/components/VCarousel/VCarousel.ts +15 -3
  58. package/src/components/VCarousel/__tests__/VCarousel.spec.ts +74 -54
  59. package/src/components/VCarousel/__tests__/VCarouselItem.spec.ts +9 -5
  60. package/src/components/VCarousel/__tests__/__snapshots__/VCarousel.spec.ts.snap +1 -1
  61. package/src/components/VDialog/VDialog.ts +14 -4
  62. package/src/components/VDialog/__tests__/VDialog.spec.ts +105 -101
  63. package/src/components/VDialog/__tests__/__snapshots__/VDialog.spec.ts.snap +0 -15
  64. package/src/components/VExpansionPanel/__tests__/VExpansionPanel.spec.ts +43 -27
  65. package/src/components/VExpansionPanel/__tests__/__snapshots__/VExpansionPanel.spec.ts.snap +18 -16
  66. package/src/components/VFileInput/VFileInput.ts +46 -33
  67. package/src/components/VFileInput/__tests__/VFileInput.spec.ts +84 -54
  68. package/src/components/VFileInput/__tests__/__snapshots__/VFileInput.spec.ts.snap +242 -146
  69. package/src/components/VImg/__tests__/VImg.spec.ts +21 -20
  70. package/src/components/VImg/__tests__/__snapshots__/VImg.spec.ts.snap +16 -11
  71. package/src/components/VNavigationDrawer/__tests__/VNavigationDrawer.spec.ts +84 -71
  72. package/src/components/VPagination/VPagination.ts +16 -19
  73. package/src/components/VPagination/__tests__/VPagination.spec.ts +85 -71
  74. package/src/components/VPagination/__tests__/__snapshots__/VPagination.spec.ts.snap +184 -429
  75. package/src/components/VRangeSlider/VRangeSlider.ts +19 -4
  76. package/src/components/VRangeSlider/__tests__/VRangeSlider.spec.ts +40 -40
  77. package/src/components/VRangeSlider/__tests__/__snapshots__/VRangeSlider.spec.ts.snap +32 -38
  78. package/src/components/VSubheader/VSubheader.ts +1 -1
  79. package/src/components/VSubheader/__tests__/VSubheader.spec.ts +12 -7
  80. package/src/components/VSubheader/__tests__/__snapshots__/VSubheader.spec.ts.snap +1 -1
  81. package/src/components/VSystemBar/__tests__/VSystemBar.spec.ts +89 -17
  82. package/src/components/VTimeline/__tests__/VTimelineItem.spec.ts +25 -35
  83. package/src/components/VTimeline/__tests__/__snapshots__/VTimelineItem.spec.ts.snap +4 -5
  84. package/src/components/VTreeview/VTreeview.ts +20 -12
  85. package/src/components/VTreeview/VTreeviewNode.ts +0 -2
  86. package/src/components/VTreeview/__tests__/VTreeview.spec.ts +168 -174
  87. package/src/components/VTreeview/__tests__/VTreeviewNode.spec.ts +77 -66
  88. package/src/components/VTreeview/__tests__/__snapshots__/VTreeview.spec.ts.snap +141 -141
  89. package/src/components/VTreeview/__tests__/__snapshots__/VTreeviewNode.spec.ts.snap +26 -51
  90. package/src/components/VVirtualScroll/VVirtualScroll.ts +0 -1
  91. package/src/components/VVirtualScroll/__tests__/VVirtualScroll.spec.ts +6 -9
  92. package/src/components/VWindow/__tests__/VWindow.spec.ts +78 -0
  93. package/src/components/VWindow/__tests__/VWindowItem.spec.ts +127 -0
  94. package/src/components/VWindow/__tests__/__snapshots__/VWindow.spec.ts.snap +59 -0
  95. package/src/components/VWindow/__tests__/__snapshots__/VWindowItem.spec.ts.snap +36 -0
@@ -56,7 +56,7 @@ var _default2 = (0, _mixins.default)(_themeable.default
56
56
  var _this = this;
57
57
 
58
58
  return (0, _vue.h)(_VBreadcrumbsDivider.default, {}, function () {
59
- return _this.$slots.divider ? _this.$slots.divider : _this.divider;
59
+ return _this.$slots.divider ? _this.$slots.divider() : _this.divider;
60
60
  });
61
61
  },
62
62
  genItems: function genItems() {
@@ -71,11 +71,13 @@ var _default2 = (0, _mixins.default)(_themeable.default
71
71
  keys.push(item.text);
72
72
  if (hasSlot) items.push(_this2.$slots.item({
73
73
  item: item
74
- }));else items.push((0, _vue.h)(_VBreadcrumbsItem.default, _objectSpread({
75
- key: keys.join('.')
76
- }, item), function () {
77
- return [item.text];
78
- }));
74
+ }));else {
75
+ items.push((0, _vue.h)(_VBreadcrumbsItem.default, _objectSpread({
76
+ key: keys.join('.')
77
+ }, item), function () {
78
+ return [item.text];
79
+ }));
80
+ }
79
81
  if (i < _this2.items.length - 1) items.push(_this2.genDivider());
80
82
  };
81
83
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VBreadcrumbs/VBreadcrumbs.ts"],"names":[],"mappings":";;;;;;;AAAA;;AAEA;;AAOA;;AACA;;AAGA;;AAGA;;AACA;;;;;;;;;;gBAEe,qBACb;AACA;AAFa,EAGb,MAHa,CAGN;AACP,EAAA,IAAI,EAAE,eADC;AAGP,EAAA,KAAK,EAAE;AACL,IAAA,OAAO,EAAE;AACP,MAAA,IAAI,EAAE,MADC;AAEP,MAAA,OAAO,EAAE;AAFF,KADJ;AAKL,IAAA,KAAK,EAAE;AACL,MAAA,IAAI,EAAE,KADD;AAEL,MAAA,OAAO,EAAE;AAAA,eAAO,EAAP;AAAA;AAFJ,KALF;AASL,IAAA,KAAK,EAAE;AATF,GAHA;AAeP,EAAA,QAAQ,EAAE;AACR,IAAA,OADQ,qBACD;AACL;AACE,gCAAwB,KAAK;AAD/B,SAEK,KAAK,YAFV;AAID;AANO,GAfH;AAwBP,EAAA,OAAO,EAAE;AACP,IAAA,UADO,wBACG;AAAA;;AACR,aAAO,YAAE,4BAAF,EAAuB,EAAvB,EAA2B;AAAA,eAAM,KAAI,CAAC,MAAL,CAAY,OAAZ,GAAsB,KAAI,CAAC,MAAL,CAAY,OAAlC,GAA4C,KAAI,CAAC,OAAvD;AAAA,OAA3B,CAAP;AACD,KAHM;AAIP,IAAA,QAJO,sBAIC;AAAA;;AACN,UAAM,KAAK,GAAG,EAAd;AACA,UAAM,OAAO,GAAG,CAAC,CAAC,KAAK,MAAL,CAAY,IAA9B;AACA,UAAM,IAAI,GAAG,EAAb;;AAHM,iCAKG,CALH;AAMJ,YAAM,IAAI,GAAG,MAAI,CAAC,KAAL,CAAW,CAAX,CAAb;AAEA,QAAA,IAAI,CAAC,IAAL,CAAU,IAAI,CAAC,IAAf;AAEA,YAAI,OAAJ,EAAa,KAAK,CAAC,IAAN,CAAW,MAAI,CAAC,MAAL,CAAY,IAAZ,CAAkB;AAAE,UAAA,IAAI,EAAJ;AAAF,SAAlB,CAAX,EAAb,KACK,KAAK,CAAC,IAAN,CAAW,YAAE,yBAAF;AAAsB,UAAA,GAAG,EAAE,IAAI,CAAC,IAAL,CAAU,GAAV;AAA3B,WAA8C,IAA9C,GAAsD;AAAA,iBAAM,CAAC,IAAI,CAAC,IAAN,CAAN;AAAA,SAAtD,CAAX;AAEL,YAAI,CAAC,GAAG,MAAI,CAAC,KAAL,CAAW,MAAX,GAAoB,CAA5B,EAA+B,KAAK,CAAC,IAAN,CAAW,MAAI,CAAC,UAAL,EAAX;AAb3B;;AAKN,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,KAAL,CAAW,MAA/B,EAAuC,CAAC,EAAxC,EAA4C;AAAA,cAAnC,CAAmC;AAS3C;;AAED,aAAO,KAAP;AACD;AArBM,GAxBF;AAgDP,EAAA,MAhDO,oBAgDD;AACJ,QAAM,QAAQ,GAAG,sBAAQ,IAAR,KAAiB,KAAK,QAAL,EAAlC;AAEA,WAAO,YAAE,IAAF,EAAQ;AACb,MAAA,KAAK,EAAE,CAAC,eAAD,EAAkB,KAAK,OAAvB;AADM,KAAR,EAEJ,QAFI,CAAP;AAGD;AAtDM,CAHM,C","sourcesContent":["import {h} from 'vue'\n// Styles\nimport './VBreadcrumbs.sass'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\n// Components\nimport VBreadcrumbsItem from './VBreadcrumbsItem'\nimport VBreadcrumbsDivider from './VBreadcrumbsDivider'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\n\nexport default mixins(\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-breadcrumbs',\n\n props: {\n divider: {\n type: String,\n default: '/',\n },\n items: {\n type: Array,\n default: () => ([]),\n } as PropValidator<any[]>,\n large: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-breadcrumbs--large': this.large,\n ...this.themeClasses,\n }\n },\n },\n\n methods: {\n genDivider () {\n return h(VBreadcrumbsDivider, {}, () => this.$slots.divider ? this.$slots.divider : this.divider)\n },\n genItems () {\n const items = []\n const hasSlot = !!this.$slots.item\n const keys = []\n\n for (let i = 0; i < this.items.length; i++) {\n const item = this.items[i]\n\n keys.push(item.text)\n\n if (hasSlot) items.push(this.$slots.item!({ item }))\n else items.push(h(VBreadcrumbsItem, { key: keys.join('.'), ...item }, () => [item.text]))\n\n if (i < this.items.length - 1) items.push(this.genDivider())\n }\n\n return items\n },\n },\n\n render (): VNode {\n const children = getSlot(this) || this.genItems()\n\n return h('ul', {\n class: ['v-breadcrumbs', this.classes],\n }, children)\n },\n})\n"],"sourceRoot":"","file":"VBreadcrumbs.js"}
1
+ {"version":3,"sources":["../../../src/components/VBreadcrumbs/VBreadcrumbs.ts"],"names":[],"mappings":";;;;;;;AAAA;;AAEA;;AAMA;;AACA;;AAGA;;AAGA;;AACA;;;;;;;;;;gBAEe,qBACb;AACA;AAFa,EAGb,MAHa,CAGN;AACP,EAAA,IAAI,EAAE,eADC;AAGP,EAAA,KAAK,EAAE;AACL,IAAA,OAAO,EAAE;AACP,MAAA,IAAI,EAAE,MADC;AAEP,MAAA,OAAO,EAAE;AAFF,KADJ;AAKL,IAAA,KAAK,EAAE;AACL,MAAA,IAAI,EAAE,KADD;AAEL,MAAA,OAAO,EAAE;AAAA,eAAO,EAAP;AAAA;AAFJ,KALF;AASL,IAAA,KAAK,EAAE;AATF,GAHA;AAeP,EAAA,QAAQ,EAAE;AACR,IAAA,OADQ,qBACD;AACL;AACE,gCAAwB,KAAK;AAD/B,SAEK,KAAK,YAFV;AAID;AANO,GAfH;AAwBP,EAAA,OAAO,EAAE;AACP,IAAA,UADO,wBACG;AAAA;;AACR,aAAO,YAAE,4BAAF,EAAuB,EAAvB,EAA2B;AAAA,eAAM,KAAI,CAAC,MAAL,CAAY,OAAZ,GAAsB,KAAI,CAAC,MAAL,CAAY,OAAZ,EAAtB,GAA8C,KAAI,CAAC,OAAzD;AAAA,OAA3B,CAAP;AACD,KAHM;AAIP,IAAA,QAJO,sBAIC;AAAA;;AACN,UAAM,KAAK,GAAG,EAAd;AACA,UAAM,OAAO,GAAG,CAAC,CAAC,KAAK,MAAL,CAAY,IAA9B;AACA,UAAM,IAAI,GAAG,EAAb;;AAHM,iCAKG,CALH;AAMJ,YAAM,IAAI,GAAG,MAAI,CAAC,KAAL,CAAW,CAAX,CAAb;AAEA,QAAA,IAAI,CAAC,IAAL,CAAU,IAAI,CAAC,IAAf;AAEA,YAAI,OAAJ,EAAa,KAAK,CAAC,IAAN,CAAW,MAAI,CAAC,MAAL,CAAY,IAAZ,CAAkB;AAAE,UAAA,IAAI,EAAJ;AAAF,SAAlB,CAAX,EAAb,KACK;AACH,UAAA,KAAK,CAAC,IAAN,CAAW,YAAE,yBAAF;AACT,YAAA,GAAG,EAAE,IAAI,CAAC,IAAL,CAAU,GAAV;AADI,aAEN,IAFM,GAGR;AAAA,mBAAM,CAAC,IAAI,CAAC,IAAN,CAAN;AAAA,WAHQ,CAAX;AAID;AAED,YAAI,CAAC,GAAG,MAAI,CAAC,KAAL,CAAW,MAAX,GAAoB,CAA5B,EAA+B,KAAK,CAAC,IAAN,CAAW,MAAI,CAAC,UAAL,EAAX;AAlB3B;;AAKN,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,KAAL,CAAW,MAA/B,EAAuC,CAAC,EAAxC,EAA4C;AAAA,cAAnC,CAAmC;AAc3C;;AAED,aAAO,KAAP;AACD;AA1BM,GAxBF;AAqDP,EAAA,MArDO,oBAqDD;AACJ,QAAM,QAAQ,GAAG,sBAAQ,IAAR,KAAiB,KAAK,QAAL,EAAlC;AAEA,WAAO,YAAE,IAAF,EAAQ;AACb,MAAA,KAAK,EAAE,CAAC,eAAD,EAAkB,KAAK,OAAvB;AADM,KAAR,EAEJ,QAFI,CAAP;AAGD;AA3DM,CAHM,C","sourcesContent":["import { h, VNode } from 'vue'\n// Styles\nimport './VBreadcrumbs.sass'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\n\n// Components\nimport VBreadcrumbsItem from './VBreadcrumbsItem'\nimport VBreadcrumbsDivider from './VBreadcrumbsDivider'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\n\nexport default mixins(\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-breadcrumbs',\n\n props: {\n divider: {\n type: String,\n default: '/',\n },\n items: {\n type: Array,\n default: () => ([]),\n } as PropValidator<any[]>,\n large: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-breadcrumbs--large': this.large,\n ...this.themeClasses,\n }\n },\n },\n\n methods: {\n genDivider () {\n return h(VBreadcrumbsDivider, {}, () => this.$slots.divider ? this.$slots.divider() : this.divider)\n },\n genItems () {\n const items = []\n const hasSlot = !!this.$slots.item\n const keys = []\n\n for (let i = 0; i < this.items.length; i++) {\n const item = this.items[i]\n\n keys.push(item.text)\n\n if (hasSlot) items.push(this.$slots.item!({ item }))\n else {\n items.push(h(VBreadcrumbsItem, {\n key: keys.join('.'),\n ...item\n }, () => [item.text]))\n }\n\n if (i < this.items.length - 1) items.push(this.genDivider())\n }\n\n return items\n },\n },\n\n render (): VNode {\n const children = getSlot(this) || this.genItems()\n\n return h('ul', {\n class: ['v-breadcrumbs', this.classes],\n }, children)\n },\n})\n"],"sourceRoot":"","file":"VBreadcrumbs.js"}
@@ -34,6 +34,10 @@ var _default = (0, _mixins.default)(_routable.default).extend({
34
34
  ripple: {
35
35
  type: [Boolean, Object],
36
36
  default: false
37
+ },
38
+ text: {
39
+ type: String,
40
+ default: ''
37
41
  }
38
42
  },
39
43
  computed: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VBreadcrumbs/VBreadcrumbsItem.ts"],"names":[],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;;;;;;;AAGA;eACe,qBAAO,iBAAP,EAAiB,MAAjB,CAAwB;AACrC,EAAA,IAAI,EAAE,oBAD+B;AAGrC,EAAA,KAAK,EAAE;AACL;AACA;AACA,IAAA,WAAW,EAAE;AACX,MAAA,IAAI,EAAE,MADK;AAEX,MAAA,OAAO,EAAE;AAFE,KAHR;AAOL,IAAA,MAAM,EAAE;AACN,MAAA,IAAI,EAAE,CAAC,OAAD,EAAU,MAAV,CADA;AAEN,MAAA,OAAO,EAAE;AAFH;AAPH,GAH8B;AAgBrC,EAAA,QAAQ,EAAE;AACR,IAAA,OADQ,qBACD;AACL;AACE,+BAAuB;AADzB,SAEG,KAAK,WAFR,EAEsB,KAAK,QAF3B;AAID;AANO,GAhB2B;AAyBrC,EAAA,MAzBqC,oBAyB/B;AAAA,gCAC8B,KAAK,iBAAL,EAD9B;AAAA,QACI,GADJ,yBACI,GADJ;AAAA,QACS,IADT,yBACS,IADT;AAAA,QACe,UADf,yBACe,UADf;;AAGJ,WAAO,yBAAe,YAAE,IAAF,EAAQ,CAC5B,YAAE,GAAF,kCACK,IADL;AAEE,sBAAgB,KAAK,QAAL,IAAiB,KAAK,MAAtB,GAA+B,MAA/B,GAAwC;AAF1D,QAGG,sBAAQ,IAAR,CAHH,CAD4B,CAAR,CAAf,EAKH,UALG,CAAP;AAMD;AAlCoC,CAAxB,C","sourcesContent":["import {h, withDirectives} from 'vue'\nimport Routable from '../../mixins/routable'\n\nimport mixins from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(Routable).extend({\n name: 'v-breadcrumbs-item',\n\n props: {\n // In a breadcrumb, the currently\n // active item should be dimmed\n activeClass: {\n type: String,\n default: 'v-breadcrumbs__item--disabled',\n },\n ripple: {\n type: [Boolean, Object],\n default: false,\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-breadcrumbs__item': true,\n [this.activeClass]: this.disabled,\n }\n },\n },\n\n render (): VNode {\n const { tag, data, directives } = this.generateRouteLink()\n\n return withDirectives(h('li', [\n h(tag, {\n ...data,\n 'aria-current': this.isActive && this.isLink ? 'page' : undefined,\n }, getSlot(this)),\n ]), directives)\n },\n})\n"],"sourceRoot":"","file":"VBreadcrumbsItem.js"}
1
+ {"version":3,"sources":["../../../src/components/VBreadcrumbs/VBreadcrumbsItem.ts"],"names":[],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;;;;;;;AAGA;eACe,qBAAO,iBAAP,EAAiB,MAAjB,CAAwB;AACrC,EAAA,IAAI,EAAE,oBAD+B;AAGrC,EAAA,KAAK,EAAE;AACL;AACA;AACA,IAAA,WAAW,EAAE;AACX,MAAA,IAAI,EAAE,MADK;AAEX,MAAA,OAAO,EAAE;AAFE,KAHR;AAOL,IAAA,MAAM,EAAE;AACN,MAAA,IAAI,EAAE,CAAC,OAAD,EAAU,MAAV,CADA;AAEN,MAAA,OAAO,EAAE;AAFH,KAPH;AAWL,IAAA,IAAI,EAAE;AACJ,MAAA,IAAI,EAAE,MADF;AAEJ,MAAA,OAAO,EAAE;AAFL;AAXD,GAH8B;AAoBrC,EAAA,QAAQ,EAAE;AACR,IAAA,OADQ,qBACD;AACL;AACE,+BAAuB;AADzB,SAEG,KAAK,WAFR,EAEsB,KAAK,QAF3B;AAID;AANO,GApB2B;AA6BrC,EAAA,MA7BqC,oBA6B/B;AAAA,gCAC8B,KAAK,iBAAL,EAD9B;AAAA,QACI,GADJ,yBACI,GADJ;AAAA,QACS,IADT,yBACS,IADT;AAAA,QACe,UADf,yBACe,UADf;;AAGJ,WAAO,yBAAe,YAAE,IAAF,EAAQ,CAC5B,YAAE,GAAF,kCACK,IADL;AAEE,sBAAgB,KAAK,QAAL,IAAiB,KAAK,MAAtB,GAA+B,MAA/B,GAAwC;AAF1D,QAGG,sBAAQ,IAAR,CAHH,CAD4B,CAAR,CAAf,EAKH,UALG,CAAP;AAMD;AAtCoC,CAAxB,C","sourcesContent":["import {h, withDirectives} from 'vue'\nimport Routable from '../../mixins/routable'\n\nimport mixins from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(Routable).extend({\n name: 'v-breadcrumbs-item',\n\n props: {\n // In a breadcrumb, the currently\n // active item should be dimmed\n activeClass: {\n type: String,\n default: 'v-breadcrumbs__item--disabled',\n },\n ripple: {\n type: [Boolean, Object],\n default: false,\n },\n text: {\n type: String,\n default: '',\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-breadcrumbs__item': true,\n [this.activeClass]: this.disabled,\n }\n },\n },\n\n render (): VNode {\n const { tag, data, directives } = this.generateRouteLink()\n\n return withDirectives(h('li', [\n h(tag, {\n ...data,\n 'aria-current': this.isActive && this.isLink ? 'page' : undefined,\n }, getSlot(this)),\n ]), directives)\n },\n})\n"],"sourceRoot":"","file":"VBreadcrumbsItem.js"}
@@ -216,11 +216,23 @@ var _default = (0, _vue.defineComponent)({
216
216
  }
217
217
  },
218
218
  render: function render() {
219
- var render = _VWindow.default.render.call(this, _vue.h);
219
+ var render = _VWindow.default.render.call(this, _vue.h); // Update the style object instead of setting render.style directly
220
220
 
221
- render.style = "height: ".concat((0, _helpers.convertToUnit)(this.height), ";");
221
+
222
+ if (render.props) {
223
+ render.props.style = _objectSpread(_objectSpread({}, render.props.style), {}, {
224
+ height: (0, _helpers.convertToUnit)(this.height)
225
+ });
226
+ } else {
227
+ render.props = {
228
+ style: {
229
+ height: (0, _helpers.convertToUnit)(this.height)
230
+ }
231
+ };
232
+ }
222
233
  /* istanbul ignore else */
223
234
 
235
+
224
236
  if (!this.hideDelimiters) {
225
237
  render.children.push(this.genDelimiters());
226
238
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VCarousel/VCarousel.ts"],"names":[],"mappings":"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","sourcesContent":["// Styles\nimport './VCarousel.sass'\n\n// Extensions\nimport VWindow from '../VWindow/VWindow'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\nimport VProgressLinear from '../VProgressLinear'\n\n// Mixins\n// TODO: Move this into core components v2.0\nimport ButtonGroup from '../../mixins/button-group'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { h, VNode, PropType, defineComponent } from 'vue'\n\nexport default defineComponent({\n name: 'v-carousel',\n extends: VWindow,\n\n // pass down the parent's theme\n provide (): object {\n return {\n parentTheme: this.theme,\n }\n },\n\n props: {\n continuous: {\n type: Boolean,\n default: true,\n },\n cycle: Boolean,\n delimiterIcon: {\n type: String,\n default: '$delimiter',\n },\n height: {\n type: [Number, String],\n default: 500,\n },\n hideDelimiters: Boolean,\n hideDelimiterBackground: Boolean,\n interval: {\n type: [Number, String],\n default: 6000,\n validator: (value: string | number) => value > 0,\n },\n mandatory: {\n type: Boolean,\n default: true,\n },\n progress: Boolean,\n progressColor: String,\n showArrows: {\n type: Boolean,\n default: true,\n },\n verticalDelimiters: {\n type: String as PropType<'' | 'left' | 'right'>,\n default: undefined,\n },\n },\n\n emits: [\n 'update:modelValue',\n 'change',\n ],\n\n data () {\n return {\n internalHeight: this.height,\n slideTimeout: undefined as number | undefined,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VWindow.computed.classes.call(this),\n 'v-carousel': true,\n 'v-carousel--hide-delimiter-background': this.hideDelimiterBackground,\n 'v-carousel--vertical-delimiters': this.isVertical,\n }\n },\n isDark (): boolean {\n return this.dark || !this.light\n },\n isVertical (): boolean {\n return this.verticalDelimiters != null\n },\n },\n\n watch: {\n internalValue: 'restartTimeout',\n interval: 'restartTimeout',\n height (val, oldVal) {\n if (val === oldVal || !val) return\n this.internalHeight = val\n },\n cycle (val) {\n if (val) {\n this.restartTimeout()\n } else {\n clearTimeout(this.slideTimeout)\n this.slideTimeout = undefined\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['value', 'modelValue'],\n ['onInput', 'onUpdate:modelValue'],\n ['onChange', 'onUpdate:modelValue'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('hide-controls')) {\n breaking('hide-controls', ':show-arrows=\"false\"', this)\n }\n },\n\n mounted () {\n this.startTimeout()\n },\n\n methods: {\n genControlIcons () {\n if (this.isVertical) return null\n\n return VWindow.methods.genControlIcons.call(this)\n },\n genDelimiters (): VNode {\n return h('div', {\n class: 'v-carousel__controls',\n style: {\n left: this.verticalDelimiters === 'left' && this.isVertical ? 0 : 'auto',\n right: this.verticalDelimiters === 'right' ? 0 : 'auto',\n },\n }, [this.genItems()])\n },\n genItems (): VNode {\n const length = this.items.length\n const children = []\n\n for (let i = 0; i < length; i++) {\n const child = h(VBtn, {\n class: 'v-carousel__controls__item',\n 'aria-label': this.$vuetify.lang.t('$vuetify.carousel.ariaLabel.delimiter', i + 1, length),\n icon: true,\n small: true,\n value: this.getValue(this.items[i], i),\n key: i,\n }, () => [\n h(VIcon, {\n size: 18\n }, () => this.delimiterIcon),\n ])\n\n children.push(child)\n }\n\n return h(ButtonGroup, {\n modelValue: this.internalValue,\n mandatory: this.mandatory,\n onChange: (val: unknown) => {\n this.internalValue = val\n }\n }, () => children)\n },\n genProgress () {\n return h(VProgressLinear, {\n class: 'v-carousel__progress',\n color: this.progressColor,\n value: (this.internalIndex + 1) / this.items.length * 100,\n })\n },\n restartTimeout () {\n this.slideTimeout && clearTimeout(this.slideTimeout)\n this.slideTimeout = undefined\n\n window.requestAnimationFrame(this.startTimeout)\n },\n startTimeout () {\n if (!this.cycle) return\n\n this.slideTimeout = window.setTimeout(this.next, +this.interval > 0 ? +this.interval : 6000)\n },\n },\n\n render (): VNode {\n const render = VWindow.render.call(this, h)\n\n render.style = `height: ${convertToUnit(this.height)};`\n\n /* istanbul ignore else */\n if (!this.hideDelimiters) {\n render.children!.push(this.genDelimiters())\n }\n\n /* istanbul ignore else */\n if (this.progress || this.progressColor) {\n render.children!.push(this.genProgress())\n }\n\n return render\n },\n})\n"],"sourceRoot":"","file":"VCarousel.js"}
1
+ {"version":3,"sources":["../../../src/components/VCarousel/VCarousel.ts"],"names":[],"mappings":"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","sourcesContent":["// Styles\nimport './VCarousel.sass'\n\n// Extensions\nimport VWindow from '../VWindow/VWindow'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\nimport VProgressLinear from '../VProgressLinear'\n\n// Mixins\n// TODO: Move this into core components v2.0\nimport ButtonGroup from '../../mixins/button-group'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { h, VNode, PropType, defineComponent } from 'vue'\n\nexport default defineComponent({\n name: 'v-carousel',\n extends: VWindow,\n\n // pass down the parent's theme\n provide (): object {\n return {\n parentTheme: this.theme,\n }\n },\n\n props: {\n continuous: {\n type: Boolean,\n default: true,\n },\n cycle: Boolean,\n delimiterIcon: {\n type: String,\n default: '$delimiter',\n },\n height: {\n type: [Number, String],\n default: 500,\n },\n hideDelimiters: Boolean,\n hideDelimiterBackground: Boolean,\n interval: {\n type: [Number, String],\n default: 6000,\n validator: (value: string | number) => value > 0,\n },\n mandatory: {\n type: Boolean,\n default: true,\n },\n progress: Boolean,\n progressColor: String,\n showArrows: {\n type: Boolean,\n default: true,\n },\n verticalDelimiters: {\n type: String as PropType<'' | 'left' | 'right'>,\n default: undefined,\n },\n },\n\n emits: [\n 'update:modelValue',\n 'change',\n ],\n\n data () {\n return {\n internalHeight: this.height,\n slideTimeout: undefined as number | undefined,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VWindow.computed.classes.call(this),\n 'v-carousel': true,\n 'v-carousel--hide-delimiter-background': this.hideDelimiterBackground,\n 'v-carousel--vertical-delimiters': this.isVertical,\n }\n },\n isDark (): boolean {\n return this.dark || !this.light\n },\n isVertical (): boolean {\n return this.verticalDelimiters != null\n },\n },\n\n watch: {\n internalValue: 'restartTimeout',\n interval: 'restartTimeout',\n height (val, oldVal) {\n if (val === oldVal || !val) return\n this.internalHeight = val\n },\n cycle (val) {\n if (val) {\n this.restartTimeout()\n } else {\n clearTimeout(this.slideTimeout)\n this.slideTimeout = undefined\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['value', 'modelValue'],\n ['onInput', 'onUpdate:modelValue'],\n ['onChange', 'onUpdate:modelValue'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('hide-controls')) {\n breaking('hide-controls', ':show-arrows=\"false\"', this)\n }\n },\n\n mounted () {\n this.startTimeout()\n },\n\n methods: {\n genControlIcons () {\n if (this.isVertical) return null\n\n return VWindow.methods.genControlIcons.call(this)\n },\n genDelimiters (): VNode {\n return h('div', {\n class: 'v-carousel__controls',\n style: {\n left: this.verticalDelimiters === 'left' && this.isVertical ? 0 : 'auto',\n right: this.verticalDelimiters === 'right' ? 0 : 'auto',\n },\n }, [this.genItems()])\n },\n genItems (): VNode {\n const length = this.items.length\n const children = []\n\n for (let i = 0; i < length; i++) {\n const child = h(VBtn, {\n class: 'v-carousel__controls__item',\n 'aria-label': this.$vuetify.lang.t('$vuetify.carousel.ariaLabel.delimiter', i + 1, length),\n icon: true,\n small: true,\n value: this.getValue(this.items[i], i),\n key: i,\n }, () => [\n h(VIcon, {\n size: 18,\n }, () => this.delimiterIcon),\n ])\n\n children.push(child)\n }\n\n return h(ButtonGroup, {\n modelValue: this.internalValue,\n mandatory: this.mandatory,\n onChange: (val: unknown) => {\n this.internalValue = val\n },\n }, () => children)\n },\n genProgress () {\n return h(VProgressLinear, {\n class: 'v-carousel__progress',\n color: this.progressColor,\n value: (this.internalIndex + 1) / this.items.length * 100,\n })\n },\n restartTimeout () {\n this.slideTimeout && clearTimeout(this.slideTimeout)\n this.slideTimeout = undefined\n\n window.requestAnimationFrame(this.startTimeout)\n },\n startTimeout () {\n if (!this.cycle) return\n\n this.slideTimeout = window.setTimeout(this.next, +this.interval > 0 ? +this.interval : 6000)\n },\n },\n\n render (): VNode {\n const render = VWindow.render.call(this, h)\n\n // Update the style object instead of setting render.style directly\n if (render.props) {\n render.props.style = {\n ...render.props.style,\n height: convertToUnit(this.height),\n }\n } else {\n render.props = {\n style: {\n height: convertToUnit(this.height),\n },\n }\n }\n\n /* istanbul ignore else */\n if (!this.hideDelimiters) {\n render.children!.push(this.genDelimiters())\n }\n\n /* istanbul ignore else */\n if (this.progress || this.progressColor) {\n render.children!.push(this.genProgress())\n }\n\n return render\n },\n})\n"],"sourceRoot":"","file":"VCarousel.js"}
@@ -41,14 +41,22 @@ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableTo
41
41
 
42
42
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
43
43
 
44
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
45
-
46
44
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
47
45
 
48
46
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
49
47
 
48
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
49
+
50
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
51
+
52
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
53
+
50
54
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
51
55
 
56
+ function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
57
+
58
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
59
+
52
60
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
53
61
 
54
62
  var baseMixins = (0, _mixins.default)(_dependent.default, _detachable.default, _overlayable.default, _returnable.default, _stackable.default, _activatable.default);
@@ -79,7 +87,7 @@ var _default = baseMixins.extend({
79
87
  },
80
88
  width: [String, Number]
81
89
  },
82
- emits: ['click:outside', 'keydown'],
90
+ emits: ['click:outside', 'keydown', 'update:return-value', 'update:modelValue'],
83
91
  data: function data() {
84
92
  return {
85
93
  activatedBy: null,
@@ -131,17 +139,30 @@ var _default = baseMixins.extend({
131
139
  }
132
140
  },
133
141
  created: function created() {
142
+ var _this = this;
143
+
144
+ var breakingProps = [['value', 'modelValue'], ['onInput', 'onUpdate:modelValue']];
134
145
  /* istanbul ignore next */
146
+
147
+ breakingProps.forEach(function (_ref2) {
148
+ var _ref3 = _slicedToArray(_ref2, 2),
149
+ original = _ref3[0],
150
+ replacement = _ref3[1];
151
+
152
+ if (_this.$attrs.hasOwnProperty(original)) (0, _console.breaking)(original, replacement, _this);
153
+ });
154
+ /* istanbul ignore next */
155
+
135
156
  if (this.$attrs.hasOwnProperty('full-width')) {
136
157
  (0, _console.removed)('full-width', this);
137
158
  }
138
159
  },
139
160
  beforeMount: function beforeMount() {
140
- var _this = this;
161
+ var _this2 = this;
141
162
 
142
163
  this.$nextTick(function () {
143
- _this.isBooted = _this.isActive;
144
- _this.isActive && _this.show();
164
+ _this2.isBooted = _this2.isActive;
165
+ _this2.isActive && _this2.show();
145
166
  });
146
167
  },
147
168
  beforeUnmount: function beforeUnmount() {
@@ -149,16 +170,16 @@ var _default = baseMixins.extend({
149
170
  },
150
171
  methods: {
151
172
  animateClick: function animateClick() {
152
- var _this2 = this;
173
+ var _this3 = this;
153
174
 
154
175
  this.animate = false; // Needed for when clicking very fast
155
176
  // outside of the dialog
156
177
 
157
178
  this.$nextTick(function () {
158
- _this2.animate = true;
159
- window.clearTimeout(_this2.animateTimeout);
160
- _this2.animateTimeout = window.setTimeout(function () {
161
- return _this2.animate = false;
179
+ _this3.animate = true;
180
+ window.clearTimeout(_this3.animateTimeout);
181
+ _this3.animateTimeout = window.setTimeout(function () {
182
+ return _this3.animate = false;
162
183
  }, 150);
163
184
  });
164
185
  },
@@ -178,20 +199,20 @@ var _default = baseMixins.extend({
178
199
  }
179
200
  },
180
201
  show: function show() {
181
- var _this3 = this;
202
+ var _this4 = this;
182
203
 
183
204
  !this.fullscreen && !this.hideOverlay && this.genOverlay(); // Double nextTick to wait for lazy content to be generated
184
205
 
185
206
  this.$nextTick(function () {
186
- _this3.$nextTick(function () {
207
+ _this4.$nextTick(function () {
187
208
  var _a, _b;
188
209
 
189
- if (!((_a = _this3.$refs.dialog) === null || _a === void 0 ? void 0 : _a.contains(document.activeElement))) {
190
- _this3.previousActiveElement = document.activeElement;
191
- (_b = _this3.$refs.dialog) === null || _b === void 0 ? void 0 : _b.focus();
210
+ if (!((_a = _this4.$refs.dialog) === null || _a === void 0 ? void 0 : _a.contains(document.activeElement))) {
211
+ _this4.previousActiveElement = document.activeElement;
212
+ (_b = _this4.$refs.dialog) === null || _b === void 0 ? void 0 : _b.focus();
192
213
  }
193
214
 
194
- _this3.bind();
215
+ _this4.bind();
195
216
  });
196
217
  });
197
218
  },
@@ -250,25 +271,25 @@ var _default = baseMixins.extend({
250
271
  }
251
272
  },
252
273
  genContent: function genContent() {
253
- var _this4 = this;
274
+ var _this5 = this;
254
275
 
255
276
  return this.showLazyContent(function () {
256
277
  return [(0, _vue.h)(_VThemeProvider.VThemeProvider, {
257
278
  root: true,
258
- light: _this4.light,
259
- dark: _this4.dark
279
+ light: _this5.light,
280
+ dark: _this5.dark
260
281
  }, function () {
261
282
  return [(0, _vue.h)('div', _objectSpread(_objectSpread({
262
- class: _this4.contentClasses,
283
+ class: _this5.contentClasses,
263
284
  role: 'dialog',
264
- 'aria-modal': _this4.hideOverlay ? undefined : 'true'
265
- }, _this4.getScopeIdAttrs()), {}, {
266
- onKeydown: _this4.onKeydown,
285
+ 'aria-modal': _this5.hideOverlay ? undefined : 'true'
286
+ }, _this5.getScopeIdAttrs()), {}, {
287
+ onKeydown: _this5.onKeydown,
267
288
  style: {
268
- zIndex: _this4.activeZIndex
289
+ zIndex: _this5.activeZIndex
269
290
  },
270
291
  ref: 'content'
271
- }), [_this4.genTransition()])];
292
+ }), [_this5.genTransition()])];
272
293
  })];
273
294
  });
274
295
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VDialog/VDialog.ts"],"names":[],"mappings":"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","sourcesContent":["import { Transition, h, vShow, withDirectives } from 'vue'\n// Styles\nimport './VDialog.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Dependent from '../../mixins/dependent'\nimport Detachable from '../../mixins/detachable'\nimport Overlayable from '../../mixins/overlayable'\nimport Returnable from '../../mixins/returnable'\nimport Stackable from '../../mixins/stackable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { removed } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n Dependent,\n Detachable,\n Overlayable,\n Returnable,\n Stackable,\n Activatable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-dialog',\n\n props: {\n dark: Boolean,\n disabled: Boolean,\n fullscreen: Boolean,\n light: Boolean,\n maxWidth: [String, Number],\n noClickAnimation: Boolean,\n origin: {\n type: String,\n default: 'center center',\n },\n persistent: Boolean,\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n transition: {\n type: [String, Boolean],\n default: 'dialog-transition',\n },\n width: [String, Number],\n },\n\n emits: ['click:outside', 'keydown'],\n\n data () {\n return {\n activatedBy: null as EventTarget | null,\n animate: false,\n animateTimeout: -1,\n stackMinZIndex: 200,\n previousActiveElement: null as HTMLElement | null,\n }\n },\n\n computed: {\n classes (): object {\n return {\n [(`v-dialog ${this.contentClass}`).trim()]: true,\n 'v-dialog--active': this.isActive,\n 'v-dialog--persistent': this.persistent,\n 'v-dialog--fullscreen': this.fullscreen,\n 'v-dialog--scrollable': this.scrollable,\n 'v-dialog--animated': this.animate,\n }\n },\n contentClasses (): object {\n return {\n 'v-dialog__content': true,\n 'v-dialog__content--active': this.isActive,\n }\n },\n hasActivator (): boolean {\n return Boolean(\n !!this.$slots.activator ||\n !!this.$slots.activator\n )\n },\n },\n\n watch: {\n isActive (val) {\n if (val) {\n this.show()\n this.hideScroll()\n } else {\n this.removeOverlay()\n this.unbind()\n this.previousActiveElement?.focus()\n }\n },\n fullscreen (val) {\n if (!this.isActive) return\n\n if (val) {\n this.hideScroll()\n this.removeOverlay(false)\n } else {\n this.showScroll()\n this.genOverlay()\n }\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n beforeMount () {\n this.$nextTick(() => {\n this.isBooted = this.isActive\n this.isActive && this.show()\n })\n },\n\n beforeUnmount () {\n if (typeof window !== 'undefined') this.unbind()\n },\n\n methods: {\n animateClick () {\n this.animate = false\n // Needed for when clicking very fast\n // outside of the dialog\n this.$nextTick(() => {\n this.animate = true\n window.clearTimeout(this.animateTimeout)\n this.animateTimeout = window.setTimeout(() => (this.animate = false), 150)\n })\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n // Ignore the click if the dialog is closed or destroyed,\n // if it was on an element inside the content,\n // if it was dragged onto the overlay (#6969),\n // or if this isn't the topmost dialog (#9907)\n return !(\n this._isDestroyed ||\n !this.isActive ||\n this.$refs.content.contains(target) ||\n (this.overlay && target && !this.overlay.$el.contains(target))\n ) && this.activeZIndex >= this.getMaxZIndex()\n },\n hideScroll () {\n if (this.fullscreen) {\n document.documentElement.classList.add('overflow-y-hidden')\n } else {\n Overlayable.methods.hideScroll.call(this)\n }\n },\n show () {\n !this.fullscreen && !this.hideOverlay && this.genOverlay()\n // Double nextTick to wait for lazy content to be generated\n this.$nextTick(() => {\n this.$nextTick(() => {\n if (!this.$refs.dialog?.contains(document.activeElement)) {\n this.previousActiveElement = document.activeElement as HTMLElement\n this.$refs.dialog?.focus()\n }\n this.bind()\n })\n })\n },\n bind () {\n window.addEventListener('focusin', this.onFocusin)\n },\n unbind () {\n window.removeEventListener('focusin', this.onFocusin)\n },\n onClickOutside (e: Event) {\n this.$emit('click:outside', e)\n\n if (this.persistent) {\n this.noClickAnimation || this.animateClick()\n } else {\n this.isActive = false\n }\n },\n onKeydown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.esc && !this.getOpenDependents().length) {\n if (!this.persistent) {\n this.isActive = false\n const activator = this.getActivator()\n this.$nextTick(() => activator && (activator as HTMLElement).focus())\n } else if (!this.noClickAnimation) {\n this.animateClick()\n }\n }\n this.$emit('keydown', e)\n },\n // On focus change, wrap focus to stay inside the dialog\n // https://github.com/vuetifyjs/vuetify/issues/6892\n onFocusin (e: Event) {\n if (!e || !this.retainFocus) return\n\n const target = e.target as HTMLElement\n\n if (\n !!target &&\n this.$refs.dialog &&\n // It isn't the document or the dialog body\n ![document, this.$refs.dialog].includes(target) &&\n // It isn't inside the dialog body\n !this.$refs.dialog.contains(target) &&\n // We're the topmost dialog\n this.activeZIndex >= this.getMaxZIndex() &&\n // It isn't inside a dependent element (like a menu)\n !this.getOpenDependentElements().some(el => el.contains(target))\n // So we must have focused something outside the dialog and its children\n ) {\n // Find and focus the first available element inside the dialog\n const focusable = this.$refs.dialog.querySelectorAll('button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n const el = [...focusable].find(el => !el.hasAttribute('disabled') && !el.matches('[tabindex=\"-1\"]')) as HTMLElement | undefined\n el && el.focus()\n }\n },\n genContent () {\n return this.showLazyContent(() => [\n h(VThemeProvider, {\n root: true,\n light: this.light,\n dark: this.dark\n }, () => [\n h('div', {\n class: this.contentClasses,\n role: 'dialog',\n 'aria-modal': this.hideOverlay ? undefined : 'true',\n ...this.getScopeIdAttrs(),\n onKeydown: this.onKeydown,\n style: { zIndex: this.activeZIndex },\n ref: 'content',\n }, [this.genTransition()]),\n ]),\n ])\n },\n genTransition () {\n const content = this.genInnerContent()\n\n if (!this.transition) return content\n\n return h(Transition, {\n name: this.transition,\n origin: this.origin,\n appear: true\n }, () => [content])\n },\n genInnerContent () {\n const directives = [\n [\n ClickOutside,\n {\n handler: this.onClickOutside,\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements,\n },\n ],\n [\n vShow,\n this.isActive,\n ],\n ]\n const data: VNodeData = {\n class: this.classes,\n tabindex: this.isActive ? 0 : undefined,\n ref: 'dialog',\n style: {\n transformOrigin: this.origin,\n },\n }\n\n if (!this.fullscreen) {\n data.style = {\n ...data.style as object,\n maxWidth: convertToUnit(this.maxWidth),\n width: convertToUnit(this.width),\n }\n }\n\n return withDirectives(\n h('div', data, this.getContentSlot()),\n directives\n )\n },\n },\n\n render (): VNode {\n return h('div', {\n class: ['v-dialog__container', {\n 'v-dialog__container--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n }],\n }, [\n this.genActivator(),\n this.genContent(),\n ])\n },\n})\n"],"sourceRoot":"","file":"VDialog.js"}
1
+ {"version":3,"sources":["../../../src/components/VDialog/VDialog.ts"],"names":[],"mappings":"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","sourcesContent":["import { Transition, h, vShow, withDirectives } from 'vue'\n// Styles\nimport './VDialog.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Dependent from '../../mixins/dependent'\nimport Detachable from '../../mixins/detachable'\nimport Overlayable from '../../mixins/overlayable'\nimport Returnable from '../../mixins/returnable'\nimport Stackable from '../../mixins/stackable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { removed, breaking } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n Dependent,\n Detachable,\n Overlayable,\n Returnable,\n Stackable,\n Activatable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-dialog',\n\n props: {\n dark: Boolean,\n disabled: Boolean,\n fullscreen: Boolean,\n light: Boolean,\n maxWidth: [String, Number],\n noClickAnimation: Boolean,\n origin: {\n type: String,\n default: 'center center',\n },\n persistent: Boolean,\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n transition: {\n type: [String, Boolean],\n default: 'dialog-transition',\n },\n width: [String, Number],\n },\n\n emits: ['click:outside', 'keydown', 'update:return-value', 'update:modelValue'],\n\n data () {\n return {\n activatedBy: null as EventTarget | null,\n animate: false,\n animateTimeout: -1,\n stackMinZIndex: 200,\n previousActiveElement: null as HTMLElement | null,\n }\n },\n\n computed: {\n classes (): object {\n return {\n [(`v-dialog ${this.contentClass}`).trim()]: true,\n 'v-dialog--active': this.isActive,\n 'v-dialog--persistent': this.persistent,\n 'v-dialog--fullscreen': this.fullscreen,\n 'v-dialog--scrollable': this.scrollable,\n 'v-dialog--animated': this.animate,\n }\n },\n contentClasses (): object {\n return {\n 'v-dialog__content': true,\n 'v-dialog__content--active': this.isActive,\n }\n },\n hasActivator (): boolean {\n return Boolean(\n !!this.$slots.activator ||\n !!this.$slots.activator\n )\n },\n },\n\n watch: {\n isActive (val) {\n if (val) {\n this.show()\n this.hideScroll()\n } else {\n this.removeOverlay()\n this.unbind()\n this.previousActiveElement?.focus()\n }\n },\n fullscreen (val) {\n if (!this.isActive) return\n\n if (val) {\n this.hideScroll()\n this.removeOverlay(false)\n } else {\n this.showScroll()\n this.genOverlay()\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['value', 'modelValue'],\n ['onInput', 'onUpdate:modelValue'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n beforeMount () {\n this.$nextTick(() => {\n this.isBooted = this.isActive\n this.isActive && this.show()\n })\n },\n\n beforeUnmount () {\n if (typeof window !== 'undefined') this.unbind()\n },\n\n methods: {\n animateClick () {\n this.animate = false\n // Needed for when clicking very fast\n // outside of the dialog\n this.$nextTick(() => {\n this.animate = true\n window.clearTimeout(this.animateTimeout)\n this.animateTimeout = window.setTimeout(() => (this.animate = false), 150)\n })\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n // Ignore the click if the dialog is closed or destroyed,\n // if it was on an element inside the content,\n // if it was dragged onto the overlay (#6969),\n // or if this isn't the topmost dialog (#9907)\n return !(\n this._isDestroyed ||\n !this.isActive ||\n this.$refs.content.contains(target) ||\n (this.overlay && target && !this.overlay.$el.contains(target))\n ) && this.activeZIndex >= this.getMaxZIndex()\n },\n hideScroll () {\n if (this.fullscreen) {\n document.documentElement.classList.add('overflow-y-hidden')\n } else {\n Overlayable.methods.hideScroll.call(this)\n }\n },\n show () {\n !this.fullscreen && !this.hideOverlay && this.genOverlay()\n // Double nextTick to wait for lazy content to be generated\n this.$nextTick(() => {\n this.$nextTick(() => {\n if (!this.$refs.dialog?.contains(document.activeElement)) {\n this.previousActiveElement = document.activeElement as HTMLElement\n this.$refs.dialog?.focus()\n }\n this.bind()\n })\n })\n },\n bind () {\n window.addEventListener('focusin', this.onFocusin)\n },\n unbind () {\n window.removeEventListener('focusin', this.onFocusin)\n },\n onClickOutside (e: Event) {\n this.$emit('click:outside', e)\n\n if (this.persistent) {\n this.noClickAnimation || this.animateClick()\n } else {\n this.isActive = false\n }\n },\n onKeydown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.esc && !this.getOpenDependents().length) {\n if (!this.persistent) {\n this.isActive = false\n const activator = this.getActivator()\n this.$nextTick(() => activator && (activator as HTMLElement).focus())\n } else if (!this.noClickAnimation) {\n this.animateClick()\n }\n }\n this.$emit('keydown', e)\n },\n // On focus change, wrap focus to stay inside the dialog\n // https://github.com/vuetifyjs/vuetify/issues/6892\n onFocusin (e: Event) {\n if (!e || !this.retainFocus) return\n\n const target = e.target as HTMLElement\n\n if (\n !!target &&\n this.$refs.dialog &&\n // It isn't the document or the dialog body\n ![document, this.$refs.dialog].includes(target) &&\n // It isn't inside the dialog body\n !this.$refs.dialog.contains(target) &&\n // We're the topmost dialog\n this.activeZIndex >= this.getMaxZIndex() &&\n // It isn't inside a dependent element (like a menu)\n !this.getOpenDependentElements().some(el => el.contains(target))\n // So we must have focused something outside the dialog and its children\n ) {\n // Find and focus the first available element inside the dialog\n const focusable = this.$refs.dialog.querySelectorAll('button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n const el = [...focusable].find(el => !el.hasAttribute('disabled') && !el.matches('[tabindex=\"-1\"]')) as HTMLElement | undefined\n el && el.focus()\n }\n },\n genContent () {\n return this.showLazyContent(() => [\n h(VThemeProvider, {\n root: true,\n light: this.light,\n dark: this.dark,\n }, () => [\n h('div', {\n class: this.contentClasses,\n role: 'dialog',\n 'aria-modal': this.hideOverlay ? undefined : 'true',\n ...this.getScopeIdAttrs(),\n onKeydown: this.onKeydown,\n style: { zIndex: this.activeZIndex },\n ref: 'content',\n }, [this.genTransition()]),\n ]),\n ])\n },\n genTransition () {\n const content = this.genInnerContent()\n\n if (!this.transition) return content\n\n return h(Transition, {\n name: this.transition,\n origin: this.origin,\n appear: true,\n }, () => [content])\n },\n genInnerContent () {\n const directives = [\n [\n ClickOutside,\n {\n handler: this.onClickOutside,\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements,\n },\n ],\n [\n vShow,\n this.isActive,\n ],\n ]\n const data: VNodeData = {\n class: this.classes,\n tabindex: this.isActive ? 0 : undefined,\n ref: 'dialog',\n style: {\n transformOrigin: this.origin,\n },\n }\n\n if (!this.fullscreen) {\n data.style = {\n ...data.style as object,\n maxWidth: convertToUnit(this.maxWidth),\n width: convertToUnit(this.width),\n }\n }\n\n return withDirectives(\n h('div', data, this.getContentSlot()),\n directives\n )\n },\n },\n\n render (): VNode {\n return h('div', {\n class: ['v-dialog__container', {\n 'v-dialog__container--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n }],\n }, [\n this.genActivator(),\n this.genContent(),\n ])\n },\n})\n"],"sourceRoot":"","file":"VDialog.js"}
@@ -33,6 +33,10 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToAr
33
33
 
34
34
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
35
35
 
36
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
37
+
38
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
39
+
36
40
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
37
41
 
38
42
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
@@ -98,7 +102,7 @@ var _default = (0, _vue.defineComponent)({
98
102
  }
99
103
  }
100
104
  },
101
- emits: ['change', 'keydown'],
105
+ emits: ['change', 'keydown', 'click:prepend'],
102
106
  computed: {
103
107
  classes: function classes() {
104
108
  return _objectSpread(_objectSpread({}, _VTextField.default.computed.classes.call(this)), {}, {
@@ -116,7 +120,9 @@ var _default = (0, _vue.defineComponent)({
116
120
  return this.$vuetify.lang.t(this.counterSizeString, fileCount, (0, _helpers.humanReadableFileSize)(bytes, this.base === 1024));
117
121
  },
118
122
  internalArrayValue: function internalArrayValue() {
119
- return (0, _helpers.wrapInArray)(this.internalValue);
123
+ return (0, _helpers.wrapInArray)(this.internalValue).filter(function (v) {
124
+ return v instanceof File;
125
+ });
120
126
  },
121
127
  internalValue: {
122
128
  get: function get() {
@@ -199,27 +205,44 @@ var _default = (0, _vue.defineComponent)({
199
205
  var render = _VTextField.default.methods.genControl.call(this);
200
206
 
201
207
  if (this.hideInput) {
202
- render.style = (0, _mergeData.mergeStyles)(render.style, {
203
- display: 'none'
204
- });
208
+ if (render.props) {
209
+ render.props.style = (0, _mergeData.mergeStyles)(render.props.style, {
210
+ display: 'none'
211
+ });
212
+ } else {
213
+ render.props = {
214
+ style: {
215
+ display: 'none'
216
+ }
217
+ };
218
+ }
205
219
  }
206
220
 
207
221
  return render;
208
222
  },
209
223
  genInput: function genInput() {
210
- var input = _VTextField.default.methods.genInput.call(this);
211
-
212
- input.multiple = this.multiple; // We should not be setting value
213
- // programmatically on the input
214
- // when it is using type="file"
215
-
216
- delete input.value; // This solves an issue in Safari where
217
- // nothing happens when adding a file
218
- // due to the input event not firing
219
- // https://github.com/vuetifyjs/vuetify/issues/7941
220
-
221
- delete input.onInput;
222
- input.onChange = this.onInput;
224
+ // Create input without calling VTextField.genInput to avoid value setting
225
+ var listeners = Object.assign({}, this.listeners$);
226
+ delete listeners.change; // Change should not be bound externally
227
+
228
+ var _this$attrs$ = this.attrs$,
229
+ title = _this$attrs$.title,
230
+ value = _this$attrs$.value,
231
+ inputAttrs = _objectWithoutProperties(_this$attrs$, ["title", "value"]);
232
+
233
+ var input = (0, _vue.h)('input', _objectSpread(_objectSpread(_objectSpread({}, inputAttrs), {}, {
234
+ autofocus: this.autofocus,
235
+ disabled: this.isDisabled,
236
+ id: this.computedId,
237
+ placeholder: this.placeholder,
238
+ readonly: this.isReadonly,
239
+ type: this.type,
240
+ multiple: this.multiple
241
+ }, listeners), {}, {
242
+ onChange: this.onInput,
243
+ onKeyDown: this.onKeyDown,
244
+ ref: 'input'
245
+ }));
223
246
  return [this.genSelections(), input];
224
247
  },
225
248
  genPrependSlot: function genPrependSlot() {
@@ -265,16 +288,15 @@ var _default = (0, _vue.defineComponent)({
265
288
  genTextFieldSlot: function genTextFieldSlot() {
266
289
  var _this5 = this;
267
290
 
268
- var node = _VTextField.default.methods.genTextFieldSlot.call(this);
269
-
270
- node.onClick = function (e) {
271
- // Clicking the label already delegates to input element, so we shouldn't click it twice
272
- if (e.target && e.target.nodeName === 'LABEL') return;
273
-
274
- _this5.$refs.input.click();
275
- };
276
-
277
- return node;
291
+ return (0, _vue.h)('div', {
292
+ class: 'v-text-field__slot',
293
+ onClick: function onClick(e) {
294
+ // Clicking the label already delegates to input element, so we shouldn't click it twice
295
+ if (e.target && e.target.nodeName === 'LABEL') return;
296
+
297
+ _this5.$refs.input.click();
298
+ }
299
+ }, [this.genLabel(), this.prefix ? this.genAffix('prefix') : null, this.genInput(), this.suffix ? this.genAffix('suffix') : null]);
278
300
  },
279
301
  onInput: function onInput(e) {
280
302
  var files = _toConsumableArray(e.target.files || []);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VFileInput/VFileInput.ts"],"names":[],"mappings":"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","sourcesContent":["// Styles\nimport './VFileInput.sass'\n\n// Extensions\nimport VTextField from '../VTextField'\n\n// Components\nimport { VChip } from '../VChip'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\n\n// Utilities\nimport { deepEqual, humanReadableFileSize, wrapInArray } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\nimport { mergeStyles } from '../../util/mergeData'\nimport { defineComponent, h } from 'vue'\n\nexport default defineComponent({\n name: 'v-file-input',\n extends: VTextField,\n\n model: {\n prop: 'value',\n event: 'change',\n },\n\n props: {\n chips: Boolean,\n clearable: {\n type: Boolean,\n default: true,\n },\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n hideInput: Boolean,\n multiple: Boolean,\n placeholder: String,\n prependIcon: {\n type: String,\n default: '$file',\n },\n readonly: {\n type: Boolean,\n default: false,\n },\n showSize: {\n type: [Boolean, Number],\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(v)\n )\n },\n } as PropValidator<boolean | 1000 | 1024>,\n smallChips: Boolean,\n truncateLength: {\n type: [Number, String],\n default: 22,\n },\n type: {\n type: String,\n default: 'file',\n },\n value: {\n default: undefined,\n validator: val => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n } as PropValidator<File | File[]>,\n },\n\n emits: ['change', 'keydown'],\n\n computed: {\n classes (): object {\n return {\n ...VTextField.computed.classes.call(this),\n 'v-file-input': true,\n }\n },\n computedCounterValue (): string {\n const fileCount = (this.multiple && this.lazyValue)\n ? this.lazyValue.length\n : (this.lazyValue instanceof File) ? 1 : 0\n\n if (!this.showSize) return this.$vuetify.lang.t(this.counterString, fileCount)\n\n const bytes = this.internalArrayValue.reduce((bytes: number, { size = 0 }: File) => {\n return bytes + size\n }, 0)\n\n return this.$vuetify.lang.t(\n this.counterSizeString,\n fileCount,\n humanReadableFileSize(bytes, this.base === 1024)\n )\n },\n internalArrayValue (): File[] {\n return wrapInArray(this.internalValue)\n },\n internalValue: {\n get (): File[] {\n return this.lazyValue\n },\n set (val: File | File[]) {\n this.lazyValue = val\n this.$emit('change', this.lazyValue)\n },\n },\n isDirty (): boolean {\n return this.internalArrayValue.length > 0\n },\n isLabelActive (): boolean {\n return this.isDirty\n },\n text (): string[] {\n if (!this.isDirty && (this.persistentPlaceholder || this.isFocused || !this.hasLabel)) return [this.placeholder]\n\n return this.internalArrayValue.map((file: File) => {\n const {\n name = '',\n size = 0,\n } = file\n\n const truncatedText = this.truncateText(name)\n\n return !this.showSize\n ? truncatedText\n : `${truncatedText} (${humanReadableFileSize(size, this.base === 1024)})`\n })\n },\n base (): 1000 | 1024 | undefined {\n return typeof this.showSize !== 'boolean' ? this.showSize : undefined\n },\n hasChips (): boolean {\n return this.chips || this.smallChips\n },\n },\n\n watch: {\n readonly: {\n handler (v) {\n if (v === true) consoleError('readonly is not supported on <v-file-input>', this)\n },\n immediate: true,\n },\n value (v) {\n const value = this.multiple ? v : v ? [v] : []\n if (!deepEqual(value, this.$refs.input.files)) {\n // When the input value is changed programatically, clear the\n // internal input's value so that the `onInput` handler\n // can be triggered again if the user re-selects the exact\n // same file(s). Ideally, `input.files` should be\n // manipulated directly but that property is readonly.\n this.$refs.input.value = ''\n }\n },\n },\n\n methods: {\n clearableCallback () {\n this.internalValue = this.multiple ? [] : null\n this.$refs.input.value = ''\n },\n genChips () {\n if (!this.isDirty) return []\n\n return this.text.map((text, index) => h(VChip, {\n small: this.smallChips,\n 'onClick:close': () => {\n const internalValue = this.internalValue\n internalValue.splice(index, 1)\n this.internalValue = internalValue // Trigger the watcher\n }\n }, [text]))\n },\n genControl () {\n const render = VTextField.methods.genControl.call(this)\n\n if (this.hideInput) {\n render.style = mergeStyles(\n render.style,\n { display: 'none' }\n )\n }\n\n return render\n },\n genInput () {\n const input = VTextField.methods.genInput.call(this)\n\n input.multiple = this.multiple\n\n // We should not be setting value\n // programmatically on the input\n // when it is using type=\"file\"\n delete input.value\n\n // This solves an issue in Safari where\n // nothing happens when adding a file\n // due to the input event not firing\n // https://github.com/vuetifyjs/vuetify/issues/7941\n delete input.onInput\n input.onChange = this.onInput\n\n return [this.genSelections(), input]\n },\n genPrependSlot () {\n if (!this.prependIcon) return null\n\n const icon = this.genIcon('prepend', () => {\n this.$refs.input.click()\n })\n\n return this.genSlot('prepend', 'outer', [icon])\n },\n genSelectionText (): string[] {\n const length = this.text.length\n\n if (length < 2) return this.text\n if (this.showSize && !this.counter) return [this.computedCounterValue]\n return [this.$vuetify.lang.t(this.counterString, length)]\n },\n genSelections () {\n const children = []\n\n if (this.isDirty && this.$slots.selection) {\n this.internalArrayValue.forEach((file: File, index: number) => {\n if (!this.$slots.selection) return\n\n children.push(\n this.$slots.selection({\n text: this.text[index],\n file,\n index,\n })\n )\n })\n } else {\n children.push(this.hasChips && this.isDirty ? this.genChips() : this.genSelectionText())\n }\n\n return h('div', {\n class: ['v-file-input__text', {\n 'v-file-input__text--placeholder': this.placeholder && !this.isDirty,\n 'v-file-input__text--chips': this.hasChips && !this.$slots.selection,\n }]\n }, children)\n },\n genTextFieldSlot () {\n const node = VTextField.methods.genTextFieldSlot.call(this)\n\n node.onClick = (e: MouseEvent) => {\n // Clicking the label already delegates to input element, so we shouldn't click it twice\n if (e.target && (e.target as HTMLElement).nodeName === 'LABEL') return\n\n this.$refs.input.click()\n }\n\n return node\n },\n onInput (e: Event) {\n const files = [...(e.target as HTMLInputElement).files || []]\n\n this.internalValue = this.multiple ? files : files[0]\n\n // Set initialValue here otherwise isFocused\n // watcher in VTextField will emit a change\n // event whenever the component is blurred\n this.initialValue = this.internalValue\n },\n onKeyDown (e: KeyboardEvent) {\n this.$emit('keydown', e)\n },\n truncateText (str: string) {\n if (str.length < Number(this.truncateLength)) return str\n const charsKeepOneSide = Math.floor((Number(this.truncateLength) - 1) / 2)\n return `${str.slice(0, charsKeepOneSide)}…${str.slice(str.length - charsKeepOneSide)}`\n },\n },\n})\n"],"sourceRoot":"","file":"VFileInput.js"}
1
+ {"version":3,"sources":["../../../src/components/VFileInput/VFileInput.ts"],"names":[],"mappings":"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","sourcesContent":["// Styles\nimport './VFileInput.sass'\n\n// Extensions\nimport VTextField from '../VTextField'\n\n// Components\nimport { VChip } from '../VChip'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\n\n// Utilities\nimport { deepEqual, humanReadableFileSize, wrapInArray } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\nimport { mergeStyles } from '../../util/mergeData'\nimport { defineComponent, h } from 'vue'\n\nexport default defineComponent({\n name: 'v-file-input',\n extends: VTextField,\n\n model: {\n prop: 'value',\n event: 'change',\n },\n\n props: {\n chips: Boolean,\n clearable: {\n type: Boolean,\n default: true,\n },\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n hideInput: Boolean,\n multiple: Boolean,\n placeholder: String,\n prependIcon: {\n type: String,\n default: '$file',\n },\n readonly: {\n type: Boolean,\n default: false,\n },\n showSize: {\n type: [Boolean, Number],\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(v)\n )\n },\n } as PropValidator<boolean | 1000 | 1024>,\n smallChips: Boolean,\n truncateLength: {\n type: [Number, String],\n default: 22,\n },\n type: {\n type: String,\n default: 'file',\n },\n value: {\n default: undefined,\n validator: val => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n } as PropValidator<File | File[]>,\n },\n\n emits: ['change', 'keydown', 'click:prepend'],\n\n computed: {\n classes (): object {\n return {\n ...VTextField.computed.classes.call(this),\n 'v-file-input': true,\n }\n },\n computedCounterValue (): string {\n const fileCount = (this.multiple && this.lazyValue)\n ? this.lazyValue.length\n : (this.lazyValue instanceof File) ? 1 : 0\n\n if (!this.showSize) return this.$vuetify.lang.t(this.counterString, fileCount)\n\n const bytes = this.internalArrayValue.reduce((bytes: number, { size = 0 }: File) => {\n return bytes + size\n }, 0)\n\n return this.$vuetify.lang.t(\n this.counterSizeString,\n fileCount,\n humanReadableFileSize(bytes, this.base === 1024)\n )\n },\n internalArrayValue (): File[] {\n return wrapInArray(this.internalValue).filter((v: any) => v instanceof File)\n },\n internalValue: {\n get (): File[] {\n return this.lazyValue\n },\n set (val: File | File[]) {\n this.lazyValue = val\n this.$emit('change', this.lazyValue)\n },\n },\n isDirty (): boolean {\n return this.internalArrayValue.length > 0\n },\n isLabelActive (): boolean {\n return this.isDirty\n },\n text (): string[] {\n if (!this.isDirty && (this.persistentPlaceholder || this.isFocused || !this.hasLabel)) return [this.placeholder]\n\n return this.internalArrayValue.map((file: File) => {\n const {\n name = '',\n size = 0,\n } = file\n\n const truncatedText = this.truncateText(name)\n\n return !this.showSize\n ? truncatedText\n : `${truncatedText} (${humanReadableFileSize(size, this.base === 1024)})`\n })\n },\n base (): 1000 | 1024 | undefined {\n return typeof this.showSize !== 'boolean' ? this.showSize : undefined\n },\n hasChips (): boolean {\n return this.chips || this.smallChips\n },\n },\n\n watch: {\n readonly: {\n handler (v) {\n if (v === true) consoleError('readonly is not supported on <v-file-input>', this)\n },\n immediate: true,\n },\n value (v) {\n const value = this.multiple ? v : v ? [v] : []\n if (!deepEqual(value, this.$refs.input.files)) {\n // When the input value is changed programatically, clear the\n // internal input's value so that the `onInput` handler\n // can be triggered again if the user re-selects the exact\n // same file(s). Ideally, `input.files` should be\n // manipulated directly but that property is readonly.\n this.$refs.input.value = ''\n }\n },\n },\n\n methods: {\n clearableCallback () {\n this.internalValue = this.multiple ? [] : null\n this.$refs.input.value = ''\n },\n genChips () {\n if (!this.isDirty) return []\n\n return this.text.map((text, index) => h(VChip, {\n small: this.smallChips,\n 'onClick:close': () => {\n const internalValue = this.internalValue\n internalValue.splice(index, 1)\n this.internalValue = internalValue // Trigger the watcher\n },\n }, [text]))\n },\n genControl () {\n const render = VTextField.methods.genControl.call(this)\n\n if (this.hideInput) {\n if (render.props) {\n render.props.style = mergeStyles(render.props.style, {\n display: 'none',\n })\n } else {\n render.props = {\n style: { display: 'none' },\n }\n }\n }\n\n return render\n },\n genInput () {\n // Create input without calling VTextField.genInput to avoid value setting\n const listeners = Object.assign({}, this.listeners$)\n delete listeners.change // Change should not be bound externally\n const { title, value, ...inputAttrs } = this.attrs$\n\n const input = h('input', {\n ...inputAttrs,\n autofocus: this.autofocus,\n disabled: this.isDisabled,\n id: this.computedId,\n placeholder: this.placeholder,\n readonly: this.isReadonly,\n type: this.type,\n multiple: this.multiple,\n ...listeners,\n onChange: this.onInput,\n onKeyDown: this.onKeyDown,\n ref: 'input',\n })\n\n return [this.genSelections(), input]\n },\n genPrependSlot () {\n if (!this.prependIcon) return null\n\n const icon = this.genIcon('prepend', () => {\n this.$refs.input.click()\n })\n\n return this.genSlot('prepend', 'outer', [icon])\n },\n genSelectionText (): string[] {\n const length = this.text.length\n\n if (length < 2) return this.text\n if (this.showSize && !this.counter) return [this.computedCounterValue]\n return [this.$vuetify.lang.t(this.counterString, length)]\n },\n genSelections () {\n const children = []\n\n if (this.isDirty && this.$slots.selection) {\n this.internalArrayValue.forEach((file: File, index: number) => {\n if (!this.$slots.selection) return\n\n children.push(\n this.$slots.selection({\n text: this.text[index],\n file,\n index,\n })\n )\n })\n } else {\n children.push(this.hasChips && this.isDirty ? this.genChips() : this.genSelectionText())\n }\n\n return h('div', {\n class: ['v-file-input__text', {\n 'v-file-input__text--placeholder': this.placeholder && !this.isDirty,\n 'v-file-input__text--chips': this.hasChips && !this.$slots.selection,\n }],\n }, children)\n },\n genTextFieldSlot () {\n return h('div', {\n class: 'v-text-field__slot',\n onClick: (e: MouseEvent) => {\n // Clicking the label already delegates to input element, so we shouldn't click it twice\n if (e.target && (e.target as HTMLElement).nodeName === 'LABEL') return\n\n this.$refs.input.click()\n },\n }, [\n this.genLabel(),\n this.prefix ? this.genAffix('prefix') : null,\n this.genInput(),\n this.suffix ? this.genAffix('suffix') : null,\n ])\n },\n onInput (e: Event) {\n const files = [...(e.target as HTMLInputElement).files || []]\n\n this.internalValue = this.multiple ? files : files[0]\n\n // Set initialValue here otherwise isFocused\n // watcher in VTextField will emit a change\n // event whenever the component is blurred\n this.initialValue = this.internalValue\n },\n onKeyDown (e: KeyboardEvent) {\n this.$emit('keydown', e)\n },\n truncateText (str: string) {\n if (str.length < Number(this.truncateLength)) return str\n const charsKeepOneSide = Math.floor((Number(this.truncateLength) - 1) / 2)\n return `${str.slice(0, charsKeepOneSide)}…${str.slice(str.length - charsKeepOneSide)}`\n },\n },\n})\n"],"sourceRoot":"","file":"VFileInput.js"}