vuetify 3.8.0-beta.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/_component-variables-labs.sass +1 -0
  2. package/dist/json/attributes.json +3162 -3030
  3. package/dist/json/importMap-labs.json +32 -28
  4. package/dist/json/importMap.json +166 -166
  5. package/dist/json/tags.json +38 -0
  6. package/dist/json/web-types.json +6016 -5639
  7. package/dist/vuetify-labs.cjs +320 -55
  8. package/dist/vuetify-labs.css +5453 -5271
  9. package/dist/vuetify-labs.d.ts +612 -267
  10. package/dist/vuetify-labs.esm.js +320 -55
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +320 -55
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +74 -36
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +3042 -3037
  17. package/dist/vuetify.d.ts +161 -178
  18. package/dist/vuetify.esm.js +74 -36
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +74 -36
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +32 -32
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VAutocomplete/VAutocomplete.js +5 -10
  26. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  27. package/lib/components/VColorPicker/VColorPickerPreview.js +4 -3
  28. package/lib/components/VColorPicker/VColorPickerPreview.js.map +1 -1
  29. package/lib/components/VConfirmEdit/VConfirmEdit.d.ts +31 -6
  30. package/lib/components/VConfirmEdit/VConfirmEdit.js +17 -2
  31. package/lib/components/VConfirmEdit/VConfirmEdit.js.map +1 -1
  32. package/lib/components/VDataTable/VDataTable.d.ts +4 -4
  33. package/lib/components/VDataTable/VDataTableRow.d.ts +9 -6
  34. package/lib/components/VDataTable/VDataTableRow.js +18 -3
  35. package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
  36. package/lib/components/VDataTable/VDataTableRows.d.ts +4 -4
  37. package/lib/components/VDataTable/VDataTableServer.d.ts +4 -4
  38. package/lib/components/VDataTable/VDataTableVirtual.d.ts +4 -4
  39. package/lib/components/VDatePicker/VDatePicker.d.ts +33 -78
  40. package/lib/components/VDatePicker/VDatePicker.js +1 -1
  41. package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
  42. package/lib/components/VDatePicker/VDatePickerMonth.d.ts +33 -78
  43. package/lib/components/VEmptyState/VEmptyState.js +3 -1
  44. package/lib/components/VEmptyState/VEmptyState.js.map +1 -1
  45. package/lib/components/VField/VField.css +2 -2
  46. package/lib/components/VField/VField.js +5 -1
  47. package/lib/components/VField/VField.js.map +1 -1
  48. package/lib/components/VField/_variables.scss +1 -1
  49. package/lib/components/VIcon/VIcon.css +1 -0
  50. package/lib/components/VIcon/VIcon.d.ts +10 -0
  51. package/lib/components/VIcon/VIcon.js +6 -3
  52. package/lib/components/VIcon/VIcon.js.map +1 -1
  53. package/lib/components/VIcon/VIcon.sass +1 -0
  54. package/lib/components/VInput/VInput.css +7 -7
  55. package/lib/components/VInput/VInput.sass +5 -2
  56. package/lib/composables/calendar.d.ts +12 -35
  57. package/lib/composables/calendar.js +12 -9
  58. package/lib/composables/calendar.js.map +1 -1
  59. package/lib/entry-bundler.js +1 -1
  60. package/lib/entry-bundler.js.map +1 -1
  61. package/lib/framework.d.ts +61 -60
  62. package/lib/framework.js +1 -1
  63. package/lib/framework.js.map +1 -1
  64. package/lib/labs/VCalendar/VCalendar.d.ts +33 -78
  65. package/lib/labs/VDateInput/VDateInput.d.ts +103 -81
  66. package/lib/labs/VDateInput/VDateInput.js +77 -19
  67. package/lib/labs/VDateInput/VDateInput.js.map +1 -1
  68. package/lib/labs/VFileUpload/VFileUpload.js +2 -1
  69. package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
  70. package/lib/labs/VIconBtn/VIconBtn.css +178 -0
  71. package/lib/labs/VIconBtn/VIconBtn.d.ts +608 -0
  72. package/lib/labs/VIconBtn/VIconBtn.js +184 -0
  73. package/lib/labs/VIconBtn/VIconBtn.js.map +1 -0
  74. package/lib/labs/VIconBtn/VIconBtn.scss +110 -0
  75. package/lib/labs/VIconBtn/_variables.scss +36 -0
  76. package/lib/labs/VIconBtn/index.d.ts +1 -0
  77. package/lib/labs/VIconBtn/index.js +2 -0
  78. package/lib/labs/VIconBtn/index.js.map +1 -0
  79. package/lib/labs/components.d.ts +1 -0
  80. package/lib/labs/components.js +1 -0
  81. package/lib/labs/components.js.map +1 -1
  82. package/lib/styles/main.css +4 -0
  83. package/lib/styles/settings/_utilities.scss +5 -0
  84. package/lib/util/helpers.d.ts +1 -2
  85. package/lib/util/helpers.js +2 -12
  86. package/lib/util/helpers.js.map +1 -1
  87. package/package.json +2 -2
package/dist/vuetify.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.0-beta.0
2
+ * Vuetify v3.8.0
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -162,7 +162,7 @@
162
162
  function pick(obj, paths) {
163
163
  const found = {};
164
164
  for (const key of paths) {
165
- if (Object.hasOwn(obj, key)) {
165
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
166
166
  found[key] = obj[key];
167
167
  }
168
168
  }
@@ -4932,6 +4932,7 @@
4932
4932
  start: Boolean,
4933
4933
  end: Boolean,
4934
4934
  icon: IconValue,
4935
+ opacity: [String, Number],
4935
4936
  ...makeComponentProps(),
4936
4937
  ...makeSizeProps(),
4937
4938
  ...makeTagProps({
@@ -4950,7 +4951,7 @@
4950
4951
  const slotIcon = vue.ref();
4951
4952
  const {
4952
4953
  themeClasses
4953
- } = provideTheme(props);
4954
+ } = useTheme();
4954
4955
  const {
4955
4956
  iconData
4956
4957
  } = useIcon(vue.computed(() => slotIcon.value || props.icon));
@@ -4976,7 +4977,9 @@
4976
4977
  'v-icon--start': props.start,
4977
4978
  'v-icon--end': props.end
4978
4979
  }, props.class],
4979
- "style": [!sizeClasses.value ? {
4980
+ "style": [{
4981
+ '--v-icon-opacity': props.opacity
4982
+ }, !sizeClasses.value ? {
4980
4983
  fontSize: convertToUnit(props.size),
4981
4984
  height: convertToUnit(props.size),
4982
4985
  width: convertToUnit(props.size)
@@ -12132,7 +12135,11 @@
12132
12135
  },
12133
12136
  focus,
12134
12137
  blur
12135
- })]), hasClear && vue.createVNode(VExpandXTransition, {
12138
+ }) ?? vue.createVNode("div", {
12139
+ "id": id.value,
12140
+ "class": "v-field__input",
12141
+ "aria-describedby": messagesId.value
12142
+ }, null)]), hasClear && vue.createVNode(VExpandXTransition, {
12136
12143
  "key": "clear"
12137
12144
  }, {
12138
12145
  default: () => [vue.withDirectives(vue.createVNode("div", {
@@ -13664,12 +13671,7 @@
13664
13671
  } else {
13665
13672
  if (!props.multiple && search.value == null) model.value = [];
13666
13673
  menu.value = false;
13667
- if (!model.value.some(_ref3 => {
13668
- let {
13669
- title
13670
- } = _ref3;
13671
- return title === search.value;
13672
- })) search.value = '';
13674
+ if (props.multiple || hasSelectionSlot.value) search.value = '';
13673
13675
  selectionIndex.value = -1;
13674
13676
  }
13675
13677
  });
@@ -13757,12 +13759,12 @@
13757
13759
  "items": displayItems.value,
13758
13760
  "itemKey": "value"
13759
13761
  }, {
13760
- default: _ref4 => {
13762
+ default: _ref3 => {
13761
13763
  let {
13762
13764
  item,
13763
13765
  index,
13764
13766
  itemRef
13765
- } = _ref4;
13767
+ } = _ref3;
13766
13768
  const itemProps = vue.mergeProps(item.props, {
13767
13769
  ref: itemRef,
13768
13770
  key: item.value,
@@ -13776,10 +13778,10 @@
13776
13778
  }) ?? vue.createVNode(VListItem, vue.mergeProps(itemProps, {
13777
13779
  "role": "option"
13778
13780
  }), {
13779
- prepend: _ref5 => {
13781
+ prepend: _ref4 => {
13780
13782
  let {
13781
13783
  isSelected
13782
- } = _ref5;
13784
+ } = _ref4;
13783
13785
  return vue.createVNode(vue.Fragment, null, [props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
13784
13786
  "key": item.value,
13785
13787
  "modelValue": isSelected,
@@ -16648,7 +16650,7 @@
16648
16650
  const abortController = new AbortController();
16649
16651
  vue.onUnmounted(() => abortController.abort());
16650
16652
  async function openEyeDropper() {
16651
- if (!SUPPORTS_EYE_DROPPER) return;
16653
+ if (!SUPPORTS_EYE_DROPPER || props.disabled) return;
16652
16654
  const eyeDropper = new window.EyeDropper();
16653
16655
  try {
16654
16656
  const result = await eyeDropper.open({
@@ -16670,10 +16672,11 @@
16670
16672
  "class": "v-color-picker-preview__eye-dropper",
16671
16673
  "key": "eyeDropper"
16672
16674
  }, [vue.createVNode(VBtn, {
16673
- "onClick": openEyeDropper,
16675
+ "density": "comfortable",
16676
+ "disabled": props.disabled,
16674
16677
  "icon": "$eyeDropper",
16675
16678
  "variant": "plain",
16676
- "density": "comfortable"
16679
+ "onClick": openEyeDropper
16677
16680
  }, null)]), vue.createVNode("div", {
16678
16681
  "class": "v-color-picker-preview__dot"
16679
16682
  }, [vue.createVNode("div", {
@@ -18701,6 +18704,10 @@
18701
18704
  type: String,
18702
18705
  default: '$vuetify.confirmEdit.ok'
18703
18706
  },
18707
+ disabled: {
18708
+ type: [Boolean, Array],
18709
+ default: undefined
18710
+ },
18704
18711
  hideActions: Boolean
18705
18712
  }, 'VConfirmEdit');
18706
18713
  const VConfirmEdit = genericComponent()({
@@ -18727,6 +18734,17 @@
18727
18734
  const isPristine = vue.computed(() => {
18728
18735
  return deepEqual(model.value, internalModel.value);
18729
18736
  });
18737
+ function isActionDisabled(action) {
18738
+ if (typeof props.disabled === 'boolean') {
18739
+ return props.disabled;
18740
+ }
18741
+ if (Array.isArray(props.disabled)) {
18742
+ return props.disabled.includes(action);
18743
+ }
18744
+ return isPristine.value;
18745
+ }
18746
+ const isSaveDisabled = vue.computed(() => isActionDisabled('save'));
18747
+ const isCancelDisabled = vue.computed(() => isActionDisabled('cancel'));
18730
18748
  function save() {
18731
18749
  model.value = internalModel.value;
18732
18750
  emit('save', internalModel.value);
@@ -18737,13 +18755,13 @@
18737
18755
  }
18738
18756
  function actions(actionsProps) {
18739
18757
  return vue.createVNode(vue.Fragment, null, [vue.createVNode(VBtn, vue.mergeProps({
18740
- "disabled": isPristine.value,
18758
+ "disabled": isCancelDisabled.value,
18741
18759
  "variant": "text",
18742
18760
  "color": props.color,
18743
18761
  "onClick": cancel,
18744
18762
  "text": t(props.cancelText)
18745
18763
  }, actionsProps), null), vue.createVNode(VBtn, vue.mergeProps({
18746
- "disabled": isPristine.value,
18764
+ "disabled": isSaveDisabled.value,
18747
18765
  "variant": "text",
18748
18766
  "color": props.color,
18749
18767
  "onClick": save,
@@ -20829,22 +20847,37 @@
20829
20847
  "width": !mobile.value ? column.width : undefined
20830
20848
  }, cellProps, columnCellProps), {
20831
20849
  default: () => {
20832
- if (slots[slotName] && !mobile.value) return slots[slotName]?.(slotProps);
20833
20850
  if (column.key === 'data-table-select') {
20834
- return slots['item.data-table-select']?.(slotProps) ?? vue.createVNode(VCheckboxBtn, {
20851
+ return slots['item.data-table-select']?.({
20852
+ ...slotProps,
20853
+ props: {
20854
+ disabled: !item.selectable,
20855
+ modelValue: isSelected([item]),
20856
+ onClick: vue.withModifiers(() => toggleSelect(item), ['stop'])
20857
+ }
20858
+ }) ?? vue.createVNode(VCheckboxBtn, {
20835
20859
  "disabled": !item.selectable,
20836
20860
  "modelValue": isSelected([item]),
20837
20861
  "onClick": vue.withModifiers(event => toggleSelect(item, props.index, event), ['stop'])
20838
20862
  }, null);
20839
20863
  }
20840
20864
  if (column.key === 'data-table-expand') {
20841
- return slots['item.data-table-expand']?.(slotProps) ?? vue.createVNode(VBtn, {
20865
+ return slots['item.data-table-expand']?.({
20866
+ ...slotProps,
20867
+ props: {
20868
+ icon: isExpanded(item) ? '$collapse' : '$expand',
20869
+ size: 'small',
20870
+ variant: 'text',
20871
+ onClick: vue.withModifiers(() => toggleExpand(item), ['stop'])
20872
+ }
20873
+ }) ?? vue.createVNode(VBtn, {
20842
20874
  "icon": isExpanded(item) ? '$collapse' : '$expand',
20843
20875
  "size": "small",
20844
20876
  "variant": "text",
20845
20877
  "onClick": vue.withModifiers(() => toggleExpand(item), ['stop'])
20846
20878
  }, null);
20847
20879
  }
20880
+ if (slots[slotName] && !mobile.value) return slots[slotName](slotProps);
20848
20881
  const displayValue = vue.toDisplayString(slotProps.value);
20849
20882
  return !mobile.value ? displayValue : vue.createVNode(vue.Fragment, null, [vue.createVNode("div", {
20850
20883
  "class": "v-data-table__td-title"
@@ -22183,11 +22216,14 @@
22183
22216
  type: String,
22184
22217
  default: 'dynamic'
22185
22218
  },
22186
- firstDayOfWeek: [Number, String]
22219
+ firstDayOfWeek: {
22220
+ type: [Number, String],
22221
+ default: 0
22222
+ }
22187
22223
  }, 'calendar');
22188
22224
  function useCalendar(props) {
22189
22225
  const adapter = useDate();
22190
- const model = useProxiedModel(props, 'modelValue', [], v => wrapInArray(v));
22226
+ const model = useProxiedModel(props, 'modelValue', [], v => wrapInArray(v).map(i => adapter.date(i)));
22191
22227
  const displayValue = vue.computed(() => {
22192
22228
  if (props.displayValue) return adapter.date(props.displayValue);
22193
22229
  if (model.value.length > 0) return adapter.date(model.value[0]);
@@ -22204,15 +22240,15 @@
22204
22240
  const date = adapter.setYear(adapter.startOfMonth(adapter.date()), adapter.getYear(year.value));
22205
22241
  return adapter.setMonth(date, value);
22206
22242
  }, v => adapter.getMonth(v));
22207
- const defaultFirstDayOfWeek = vue.computed(() => {
22208
- return props.firstDayOfWeek ?? props.weekdays[0];
22209
- });
22210
22243
  const weekDays = vue.computed(() => {
22211
- const firstDayOfWeek = Number(props.firstDayOfWeek ?? 0);
22212
- return props.weekdays.map(day => (day + firstDayOfWeek) % 7);
22244
+ const firstDayOfWeek = Number(props.firstDayOfWeek);
22245
+
22246
+ // Always generate all days, regardless of props.weekdays
22247
+ return [0, 1, 2, 3, 4, 5, 6].map(day => (day + firstDayOfWeek) % 7);
22213
22248
  });
22214
22249
  const weeksInMonth = vue.computed(() => {
22215
- const weeks = adapter.getWeekArray(month.value, defaultFirstDayOfWeek.value);
22250
+ const firstDayOfWeek = Number(props.firstDayOfWeek);
22251
+ const weeks = adapter.getWeekArray(month.value, firstDayOfWeek);
22216
22252
  const days = weeks.flat();
22217
22253
 
22218
22254
  // Make sure there's always 6 weeks in month (6 * 7 days)
@@ -22290,7 +22326,7 @@
22290
22326
  if (typeof props.allowedDates === 'function') {
22291
22327
  return !props.allowedDates(date);
22292
22328
  }
22293
- return false;
22329
+ return !props.weekdays.includes(adapter.toJsDate(date).getDay());
22294
22330
  }
22295
22331
  return {
22296
22332
  displayValue,
@@ -22700,7 +22736,7 @@
22700
22736
  const {
22701
22737
  rtlClasses
22702
22738
  } = useRtl();
22703
- const model = useProxiedModel(props, 'modelValue', undefined, v => wrapInArray(v), v => props.multiple ? v : v[0]);
22739
+ const model = useProxiedModel(props, 'modelValue', undefined, v => wrapInArray(v).map(i => adapter.date(i)), v => props.multiple ? v : v[0]);
22704
22740
  const viewMode = useProxiedModel(props, 'viewMode');
22705
22741
  // const inputMode = useProxiedModel(props, 'inputMode')
22706
22742
 
@@ -23025,7 +23061,9 @@
23025
23061
  VBtn: {
23026
23062
  class: 'v-empty-state__action-btn',
23027
23063
  color: props.color ?? 'surface-variant',
23028
- text: props.actionText
23064
+ href: props.href,
23065
+ text: props.actionText,
23066
+ to: props.to
23029
23067
  }
23030
23068
  }
23031
23069
  }, {
@@ -29172,7 +29210,7 @@
29172
29210
  };
29173
29211
  });
29174
29212
  }
29175
- const version$1 = "3.8.0-beta.0";
29213
+ const version$1 = "3.8.0";
29176
29214
  createVuetify$1.version = version$1;
29177
29215
 
29178
29216
  // Vue's inject() can only be used in setup
@@ -29197,7 +29235,7 @@
29197
29235
  ...options
29198
29236
  });
29199
29237
  };
29200
- const version = "3.8.0-beta.0";
29238
+ const version = "3.8.0";
29201
29239
  createVuetify.version = version;
29202
29240
 
29203
29241
  exports.blueprints = index;