@vuetify/nightly 3.1.2-next-20230113.0 → 3.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/CHANGELOG.md +15 -2
  2. package/dist/json/importMap.json +56 -56
  3. package/dist/vuetify-labs.css +178 -177
  4. package/dist/vuetify-labs.d.ts +40 -3
  5. package/dist/vuetify-labs.esm.js +158 -90
  6. package/dist/vuetify-labs.esm.js.map +1 -1
  7. package/dist/vuetify-labs.js +158 -90
  8. package/dist/vuetify-labs.min.css +2 -2
  9. package/dist/vuetify.css +203 -202
  10. package/dist/vuetify.d.ts +56 -19
  11. package/dist/vuetify.esm.js +105 -74
  12. package/dist/vuetify.esm.js.map +1 -1
  13. package/dist/vuetify.js +105 -74
  14. package/dist/vuetify.js.map +1 -1
  15. package/dist/vuetify.min.css +2 -2
  16. package/dist/vuetify.min.js +52 -52
  17. package/dist/vuetify.min.js.map +1 -1
  18. package/lib/components/VAutocomplete/VAutocomplete.mjs +1 -0
  19. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  20. package/lib/components/VBtn/VBtn.mjs +9 -3
  21. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  22. package/lib/components/VCard/VCard.mjs +5 -2
  23. package/lib/components/VCard/VCard.mjs.map +1 -1
  24. package/lib/components/VCard/index.d.ts +8 -2
  25. package/lib/components/VCombobox/VCombobox.mjs +2 -1
  26. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  27. package/lib/components/VFileInput/VFileInput.css +1 -0
  28. package/lib/components/VFileInput/VFileInput.sass +1 -0
  29. package/lib/components/VList/VListItem.css +1 -1
  30. package/lib/components/VList/VListItem.mjs +5 -1
  31. package/lib/components/VList/VListItem.mjs.map +1 -1
  32. package/lib/components/VList/VListItem.sass +1 -1
  33. package/lib/components/VList/index.d.ts +20 -1
  34. package/lib/components/VProgressLinear/VProgressLinear.mjs +13 -1
  35. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  36. package/lib/components/VProgressLinear/index.d.ts +18 -0
  37. package/lib/components/VSelect/VSelect.mjs +1 -0
  38. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  39. package/lib/components/VSlider/VSliderThumb.mjs +5 -1
  40. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  41. package/lib/components/index.d.ts +40 -3
  42. package/lib/composables/filter.mjs +3 -3
  43. package/lib/composables/filter.mjs.map +1 -1
  44. package/lib/entry-bundler.mjs +1 -1
  45. package/lib/entry-bundler.mjs.map +1 -1
  46. package/lib/framework.mjs +1 -1
  47. package/lib/framework.mjs.map +1 -1
  48. package/lib/index.d.ts +16 -16
  49. package/lib/labs/VDataTable/VDataTable.mjs +4 -1
  50. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  51. package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs +3 -3
  52. package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs.map +1 -1
  53. package/lib/labs/VDataTable/VDataTableRows.mjs +36 -8
  54. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  55. package/lib/labs/VDataTable/VDataTableVirtual.mjs +4 -1
  56. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  57. package/lib/labs/VDataTable/composables/group.mjs +9 -4
  58. package/lib/labs/VDataTable/composables/group.mjs.map +1 -1
  59. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.1.2-next-20230113.0
2
+ * Vuetify v3.1.2
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -4388,9 +4388,69 @@
4388
4388
  updated: updated$1
4389
4389
  };
4390
4390
 
4391
+ // Composables
4392
+
4393
+ // Types
4394
+
4395
+ const oppositeMap = {
4396
+ center: 'center',
4397
+ top: 'bottom',
4398
+ bottom: 'top',
4399
+ left: 'right',
4400
+ right: 'left'
4401
+ };
4402
+ const makeLocationProps = propsFactory({
4403
+ location: String
4404
+ }, 'location');
4405
+ function useLocation(props) {
4406
+ let opposite = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
4407
+ let offset = arguments.length > 2 ? arguments[2] : undefined;
4408
+ const {
4409
+ isRtl
4410
+ } = useRtl();
4411
+ const locationStyles = vue.computed(() => {
4412
+ if (!props.location) return {};
4413
+ const {
4414
+ side,
4415
+ align
4416
+ } = parseAnchor(props.location.split(' ').length > 1 ? props.location : `${props.location} center`, isRtl.value);
4417
+ function getOffset(side) {
4418
+ return offset ? offset(side) : 0;
4419
+ }
4420
+ const styles = {};
4421
+ if (side !== 'center') {
4422
+ if (opposite) styles[oppositeMap[side]] = `calc(100% - ${getOffset(side)}px)`;else styles[side] = 0;
4423
+ }
4424
+ if (align !== 'center') {
4425
+ if (opposite) styles[oppositeMap[align]] = `calc(100% - ${getOffset(align)}px)`;else styles[align] = 0;
4426
+ } else {
4427
+ if (side === 'center') styles.top = styles.left = '50%';else {
4428
+ styles[{
4429
+ top: 'left',
4430
+ bottom: 'left',
4431
+ left: 'top',
4432
+ right: 'top'
4433
+ }[side]] = '50%';
4434
+ }
4435
+ styles.transform = {
4436
+ top: 'translateX(-50%)',
4437
+ bottom: 'translateX(-50%)',
4438
+ left: 'translateY(-50%)',
4439
+ right: 'translateY(-50%)',
4440
+ center: 'translate(-50%, -50%)'
4441
+ }[side];
4442
+ }
4443
+ return styles;
4444
+ });
4445
+ return {
4446
+ locationStyles
4447
+ };
4448
+ }
4449
+
4391
4450
  const VProgressLinear = defineComponent({
4392
4451
  name: 'VProgressLinear',
4393
4452
  props: {
4453
+ absolute: Boolean,
4394
4454
  active: {
4395
4455
  type: Boolean,
4396
4456
  default: true
@@ -4420,6 +4480,9 @@
4420
4480
  stream: Boolean,
4421
4481
  striped: Boolean,
4422
4482
  roundedBar: Boolean,
4483
+ ...makeLocationProps({
4484
+ location: 'top'
4485
+ }),
4423
4486
  ...makeRoundedProps(),
4424
4487
  ...makeTagProps(),
4425
4488
  ...makeThemeProps()
@@ -4438,6 +4501,9 @@
4438
4501
  const {
4439
4502
  themeClasses
4440
4503
  } = provideTheme(props);
4504
+ const {
4505
+ locationStyles
4506
+ } = useLocation(props);
4441
4507
  const {
4442
4508
  textColorClasses,
4443
4509
  textColorStyles
@@ -4479,6 +4545,7 @@
4479
4545
  useRender(() => vue.createVNode(props.tag, {
4480
4546
  "ref": intersectionRef,
4481
4547
  "class": ['v-progress-linear', {
4548
+ 'v-progress-linear--absolute': props.absolute,
4482
4549
  'v-progress-linear--active': props.active && isIntersecting.value,
4483
4550
  'v-progress-linear--reverse': isReversed.value,
4484
4551
  'v-progress-linear--rounded': props.rounded,
@@ -4486,8 +4553,11 @@
4486
4553
  'v-progress-linear--striped': props.striped
4487
4554
  }, roundedClasses.value, themeClasses.value],
4488
4555
  "style": {
4556
+ bottom: props.location === 'bottom' ? 0 : undefined,
4557
+ top: props.location === 'top' ? 0 : undefined,
4489
4558
  height: props.active ? convertToUnit(height.value) : 0,
4490
- '--v-progress-linear-height': convertToUnit(height.value)
4559
+ '--v-progress-linear-height': convertToUnit(height.value),
4560
+ ...locationStyles.value
4491
4561
  },
4492
4562
  "role": "progressbar",
4493
4563
  "aria-hidden": props.active ? 'false' : 'true',
@@ -4573,65 +4643,6 @@
4573
4643
  }, null)]);
4574
4644
  }
4575
4645
 
4576
- // Composables
4577
-
4578
- // Types
4579
-
4580
- const oppositeMap = {
4581
- center: 'center',
4582
- top: 'bottom',
4583
- bottom: 'top',
4584
- left: 'right',
4585
- right: 'left'
4586
- };
4587
- const makeLocationProps = propsFactory({
4588
- location: String
4589
- }, 'location');
4590
- function useLocation(props) {
4591
- let opposite = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
4592
- let offset = arguments.length > 2 ? arguments[2] : undefined;
4593
- const {
4594
- isRtl
4595
- } = useRtl();
4596
- const locationStyles = vue.computed(() => {
4597
- if (!props.location) return {};
4598
- const {
4599
- side,
4600
- align
4601
- } = parseAnchor(props.location.split(' ').length > 1 ? props.location : `${props.location} center`, isRtl.value);
4602
- function getOffset(side) {
4603
- return offset ? offset(side) : 0;
4604
- }
4605
- const styles = {};
4606
- if (side !== 'center') {
4607
- if (opposite) styles[oppositeMap[side]] = `calc(100% - ${getOffset(side)}px)`;else styles[side] = 0;
4608
- }
4609
- if (align !== 'center') {
4610
- if (opposite) styles[oppositeMap[align]] = `calc(100% - ${getOffset(align)}px)`;else styles[align] = 0;
4611
- } else {
4612
- if (side === 'center') styles.top = styles.left = '50%';else {
4613
- styles[{
4614
- top: 'left',
4615
- bottom: 'left',
4616
- left: 'top',
4617
- right: 'top'
4618
- }[side]] = '50%';
4619
- }
4620
- styles.transform = {
4621
- top: 'translateX(-50%)',
4622
- bottom: 'translateX(-50%)',
4623
- left: 'translateY(-50%)',
4624
- right: 'translateY(-50%)',
4625
- center: 'translate(-50%, -50%)'
4626
- }[side];
4627
- }
4628
- return styles;
4629
- });
4630
- return {
4631
- locationStyles
4632
- };
4633
- }
4634
-
4635
4646
  // Utilities
4636
4647
 
4637
4648
  // Types
@@ -4837,8 +4848,14 @@
4837
4848
  const group = useGroupItem(props, props.symbol, false);
4838
4849
  const link = useLink(props, attrs);
4839
4850
  const isActive = vue.computed(() => {
4840
- var _link$isActive;
4841
- return props.active !== false && (props.active || ((_link$isActive = link.isActive) == null ? void 0 : _link$isActive.value) || (group == null ? void 0 : group.isSelected.value));
4851
+ if (props.active !== undefined) {
4852
+ return props.active;
4853
+ }
4854
+ if (link.isLink.value) {
4855
+ var _link$isActive;
4856
+ return (_link$isActive = link.isActive) == null ? void 0 : _link$isActive.value;
4857
+ }
4858
+ return group == null ? void 0 : group.isSelected.value;
4842
4859
  });
4843
4860
  const isDisabled = vue.computed(() => (group == null ? void 0 : group.disabled.value) || props.disabled);
4844
4861
  const isElevated = vue.computed(() => {
@@ -4848,7 +4865,7 @@
4848
4865
  useRender(() => {
4849
4866
  var _slots$prepend, _slots$default, _slots$append, _slots$loader;
4850
4867
  const Tag = link.isLink.value ? 'a' : props.tag;
4851
- const hasColor = !group || group.isSelected.value;
4868
+ const hasColor = !group || isActive.value;
4852
4869
  const hasPrepend = !!(props.prependIcon || slots.prepend);
4853
4870
  const hasAppend = !!(props.appendIcon || slots.append);
4854
4871
  const hasIcon = !!(props.icon && props.icon !== true);
@@ -7583,6 +7600,10 @@
7583
7600
  nav: Boolean,
7584
7601
  prependAvatar: String,
7585
7602
  prependIcon: IconValue,
7603
+ ripple: {
7604
+ type: Boolean,
7605
+ default: true
7606
+ },
7586
7607
  subtitle: [String, Number, Boolean],
7587
7608
  title: [String, Number, Boolean],
7588
7609
  value: null,
@@ -7774,7 +7795,7 @@
7774
7795
  "key": "append-avatar"
7775
7796
  }, null)])]
7776
7797
  })]
7777
- }), [[vue.resolveDirective("ripple"), isClickable.value]]);
7798
+ }), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple]]);
7778
7799
  });
7779
7800
  return {};
7780
7801
  }
@@ -9942,6 +9963,7 @@
9942
9963
  "activator": "parent",
9943
9964
  "contentClass": "v-select__content",
9944
9965
  "eager": props.eager,
9966
+ "maxHeight": 310,
9945
9967
  "openOnClick": false,
9946
9968
  "closeOnContentClick": false,
9947
9969
  "transition": props.transition
@@ -10057,7 +10079,7 @@
10057
10079
  const customFiltersLength = Object.keys((options == null ? void 0 : options.customKeyFilter) ?? {}).length;
10058
10080
  if (!(items != null && items.length)) return array;
10059
10081
  loop: for (let i = 0; i < items.length; i++) {
10060
- const item = items[i].raw;
10082
+ const item = items[i];
10061
10083
  const customMatches = {};
10062
10084
  const defaultMatches = {};
10063
10085
  let match = -1;
@@ -10097,7 +10119,7 @@
10097
10119
  }
10098
10120
  return array;
10099
10121
  }
10100
- function useFilter(props, items, query) {
10122
+ function useFilter(props, items, query, options) {
10101
10123
  const strQuery = vue.computed(() => typeof (query == null ? void 0 : query.value) !== 'string' && typeof (query == null ? void 0 : query.value) !== 'number' ? '' : String(query.value));
10102
10124
  const filteredItems = vue.ref([]);
10103
10125
  const filteredMatches = vue.ref(new Map());
@@ -10108,7 +10130,7 @@
10108
10130
  const results = filterItems(transformedItems, strQuery.value, {
10109
10131
  customKeyFilter: props.customKeyFilter,
10110
10132
  default: props.customFilter,
10111
- filterKeys: props.filterKeys,
10133
+ filterKeys: vue.unref(options == null ? void 0 : options.filterKeys) ?? props.filterKeys,
10112
10134
  filterMode: props.filterMode,
10113
10135
  noFilter: props.noFilter
10114
10136
  });
@@ -10331,6 +10353,7 @@
10331
10353
  "activator": "parent",
10332
10354
  "contentClass": "v-autocomplete__content",
10333
10355
  "eager": props.eager,
10356
+ "maxHeight": 310,
10334
10357
  "openOnClick": false,
10335
10358
  "closeOnContentClick": false,
10336
10359
  "transition": props.transition,
@@ -11039,7 +11062,10 @@
11039
11062
  },
11040
11063
  prependAvatar: String,
11041
11064
  prependIcon: IconValue,
11042
- ripple: Boolean,
11065
+ ripple: {
11066
+ type: Boolean,
11067
+ default: true
11068
+ },
11043
11069
  subtitle: String,
11044
11070
  text: String,
11045
11071
  title: String,
@@ -11160,7 +11186,7 @@
11160
11186
  }), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots), slots.actions && vue.createVNode(VCardActions, null, {
11161
11187
  default: slots.actions
11162
11188
  }), genOverlays(isClickable.value, 'v-card')]
11163
- }), [[vue.resolveDirective("ripple"), isClickable.value]]);
11189
+ }), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple]]);
11164
11190
  });
11165
11191
  return {};
11166
11192
  }
@@ -12453,6 +12479,10 @@
12453
12479
  position: {
12454
12480
  type: Number,
12455
12481
  required: true
12482
+ },
12483
+ ripple: {
12484
+ type: Boolean,
12485
+ default: true
12456
12486
  }
12457
12487
  },
12458
12488
  emits: {
@@ -12553,7 +12583,7 @@
12553
12583
  }, null), vue.withDirectives(vue.createVNode("div", {
12554
12584
  "class": ['v-slider-thumb__ripple', textColorClasses.value],
12555
12585
  "style": textColorStyles.value
12556
- }, null), [[vue.resolveDirective("ripple"), true, null, {
12586
+ }, null), [[vue.resolveDirective("ripple"), props.ripple, null, {
12557
12587
  circle: true,
12558
12588
  center: true
12559
12589
  }]]), vue.createVNode(VScaleTransition, {
@@ -13605,7 +13635,7 @@
13605
13635
  vTextFieldRef.value.setSelectionRange(0, 0);
13606
13636
  }
13607
13637
  }
13608
- if (e.key === 'Enter') {
13638
+ if (e.key === 'Enter' && search.value) {
13609
13639
  select(transformItem$1(props, search.value));
13610
13640
  search.value = '';
13611
13641
  }
@@ -13694,6 +13724,7 @@
13694
13724
  "activator": "parent",
13695
13725
  "contentClass": "v-combobox__content",
13696
13726
  "eager": props.eager,
13727
+ "maxHeight": 310,
13697
13728
  "openOnClick": false,
13698
13729
  "closeOnContentClick": false,
13699
13730
  "transition": props.transition,
@@ -18523,9 +18554,13 @@
18523
18554
  order: val.order ?? false
18524
18555
  })).concat(sortBy.value);
18525
18556
  });
18526
- function toggleGroup(group, value) {
18527
- const open = value == null ? !opened.value.has(group) : value;
18528
- if (open) opened.value.add(group);else opened.value.delete(group);
18557
+ function isGroupOpen(group) {
18558
+ return opened.value.has(group.id);
18559
+ }
18560
+ function toggleGroup(group) {
18561
+ const newOpened = new Set(opened.value);
18562
+ if (!isGroupOpen(group)) newOpened.add(group.id);else newOpened.delete(group.id);
18563
+ opened.value = newOpened;
18529
18564
  }
18530
18565
  function extractRows(items) {
18531
18566
  function dive(group) {
@@ -18558,7 +18593,8 @@
18558
18593
  toggleGroup,
18559
18594
  opened,
18560
18595
  groupBy,
18561
- extractRows
18596
+ extractRows,
18597
+ isGroupOpen
18562
18598
  };
18563
18599
  vue.provide(VDataTableGroupSymbol, data);
18564
18600
  return data;
@@ -18644,7 +18680,7 @@
18644
18680
  slots
18645
18681
  } = _ref;
18646
18682
  const {
18647
- opened,
18683
+ isGroupOpen,
18648
18684
  toggleGroup,
18649
18685
  extractRows
18650
18686
  } = useGroupBy();
@@ -18667,8 +18703,8 @@
18667
18703
  }, [columns.value.map(column => {
18668
18704
  if (column.key === 'data-table-group') {
18669
18705
  var _slots$dataTableGro;
18670
- const icon = opened.value.has(props.item.id) ? '$expand' : '$next';
18671
- const onClick = () => toggleGroup(props.item.id);
18706
+ const icon = isGroupOpen(props.item) ? '$expand' : '$next';
18707
+ const onClick = () => toggleGroup(props.item);
18672
18708
  return ((_slots$dataTableGro = slots['data-table-group']) == null ? void 0 : _slots$dataTableGro.call(slots, {
18673
18709
  item: props.item,
18674
18710
  count: rows.value.length,
@@ -18861,10 +18897,18 @@
18861
18897
  columns
18862
18898
  } = useHeaders();
18863
18899
  const {
18864
- expanded,
18865
- expand,
18866
- expandOnClick
18900
+ expandOnClick,
18901
+ toggleExpand,
18902
+ isExpanded
18867
18903
  } = useExpanded();
18904
+ const {
18905
+ isSelected,
18906
+ toggleSelect
18907
+ } = useSelection();
18908
+ const {
18909
+ toggleGroup,
18910
+ isGroupOpen
18911
+ } = useGroupBy();
18868
18912
  const {
18869
18913
  t
18870
18914
  } = useLocale();
@@ -18883,23 +18927,41 @@
18883
18927
  })), props.items.map((item, index) => {
18884
18928
  var _slots$expandedRow;
18885
18929
  if (item.type === 'group-header') {
18886
- return vue.createVNode(VDataTableGroupHeaderRow, {
18930
+ return slots['group-header'] ? slots['group-header']({
18931
+ index,
18932
+ item,
18933
+ columns: columns.value,
18934
+ isExpanded,
18935
+ toggleExpand,
18936
+ isSelected,
18937
+ toggleSelect,
18938
+ toggleGroup,
18939
+ isGroupOpen
18940
+ }) : vue.createVNode(VDataTableGroupHeaderRow, {
18887
18941
  "key": `group-header_${item.id}`,
18888
18942
  "item": item
18889
18943
  }, slots);
18890
18944
  }
18891
- return vue.createVNode(vue.Fragment, null, [vue.createVNode(VDataTableRow, {
18945
+ return vue.createVNode(vue.Fragment, null, [slots.item ? slots.item({
18946
+ index,
18947
+ item,
18948
+ columns: columns.value,
18949
+ isExpanded,
18950
+ toggleExpand,
18951
+ isSelected,
18952
+ toggleSelect
18953
+ }) : vue.createVNode(VDataTableRow, {
18892
18954
  "key": `item_${item.value}`,
18893
18955
  "onClick": event => {
18894
18956
  if (expandOnClick.value) {
18895
- expand(item, !expanded.value.has(item.value));
18957
+ toggleExpand(item.value);
18896
18958
  }
18897
18959
  emit('click:row', event, {
18898
18960
  item
18899
18961
  });
18900
18962
  },
18901
18963
  "item": item
18902
- }, slots), expanded.value.has(item.value) && ((_slots$expandedRow = slots['expanded-row']) == null ? void 0 : _slots$expandedRow.call(slots, {
18964
+ }, slots), isExpanded(item.value) && ((_slots$expandedRow = slots['expanded-row']) == null ? void 0 : _slots$expandedRow.call(slots, {
18903
18965
  item,
18904
18966
  columns: columns.value
18905
18967
  }))]);
@@ -19197,9 +19259,12 @@
19197
19259
  const {
19198
19260
  items
19199
19261
  } = useDataTableItems(props, columns);
19262
+ const filterKeys = vue.computed(() => columns.value.map(c => 'columns.' + c.key));
19200
19263
  const {
19201
19264
  filteredItems
19202
- } = useFilter(props, items, vue.toRef(props, 'search'));
19265
+ } = useFilter(props, items, vue.toRef(props, 'search'), {
19266
+ filterKeys
19267
+ });
19203
19268
  const {
19204
19269
  sortBy
19205
19270
  } = createSort(props);
@@ -19389,9 +19454,12 @@
19389
19454
  const {
19390
19455
  items
19391
19456
  } = useDataTableItems(props, columns);
19457
+ const filterKeys = vue.computed(() => columns.value.map(c => 'columns.' + c.key));
19392
19458
  const {
19393
19459
  filteredItems
19394
- } = useFilter(props, items, vue.toRef(props, 'search'));
19460
+ } = useFilter(props, items, vue.toRef(props, 'search'), {
19461
+ filterKeys
19462
+ });
19395
19463
  const {
19396
19464
  sortBy
19397
19465
  } = createSort(props);
@@ -20089,7 +20157,7 @@
20089
20157
  locale
20090
20158
  };
20091
20159
  }
20092
- const version$1 = "3.1.2-next-20230113.0";
20160
+ const version$1 = "3.1.2";
20093
20161
  createVuetify$1.version = version$1;
20094
20162
 
20095
20163
  // Vue's inject() can only be used in setup
@@ -20102,7 +20170,7 @@
20102
20170
  }
20103
20171
  }
20104
20172
 
20105
- const version = "3.1.2-next-20230113.0";
20173
+ const version = "3.1.2";
20106
20174
 
20107
20175
  const createVuetify = function () {
20108
20176
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};