@vuetify/nightly 3.8.0-beta.0-dev.2025-03-24 → 3.8.0-beta.0-dev.2025-03-25

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 (46) hide show
  1. package/CHANGELOG.md +39 -3
  2. package/dist/json/attributes.json +3258 -3254
  3. package/dist/json/importMap-labs.json +8 -8
  4. package/dist/json/importMap.json +162 -162
  5. package/dist/json/tags.json +1 -0
  6. package/dist/json/web-types.json +6130 -6099
  7. package/dist/vuetify-labs.cjs +63 -25
  8. package/dist/vuetify-labs.css +3530 -3530
  9. package/dist/vuetify-labs.d.ts +112 -88
  10. package/dist/vuetify-labs.esm.js +63 -25
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +63 -25
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +25 -10
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +6104 -6104
  17. package/dist/vuetify.d.ts +89 -86
  18. package/dist/vuetify.esm.js +25 -10
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +25 -10
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +10 -10
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VDataTable/VDataTable.d.ts +4 -4
  26. package/lib/components/VDataTable/VDataTableRow.d.ts +9 -6
  27. package/lib/components/VDataTable/VDataTableRow.js +18 -3
  28. package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
  29. package/lib/components/VDataTable/VDataTableRows.d.ts +4 -4
  30. package/lib/components/VDataTable/VDataTableServer.d.ts +4 -4
  31. package/lib/components/VDataTable/VDataTableVirtual.d.ts +4 -4
  32. package/lib/components/VDatePicker/VDatePicker.js +1 -1
  33. package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
  34. package/lib/components/VIcon/VIcon.js +2 -2
  35. package/lib/components/VIcon/VIcon.js.map +1 -1
  36. package/lib/composables/calendar.js +1 -1
  37. package/lib/composables/calendar.js.map +1 -1
  38. package/lib/entry-bundler.js +1 -1
  39. package/lib/framework.d.ts +54 -54
  40. package/lib/framework.js +1 -1
  41. package/lib/labs/VDateInput/VDateInput.d.ts +35 -3
  42. package/lib/labs/VDateInput/VDateInput.js +38 -15
  43. package/lib/labs/VDateInput/VDateInput.js.map +1 -1
  44. package/lib/util/helpers.js +1 -1
  45. package/lib/util/helpers.js.map +1 -1
  46. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.0-beta.0-dev.2025-03-24
2
+ * Vuetify v3.8.0-beta.0-dev.2025-03-25
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -233,7 +233,7 @@
233
233
  function pick(obj, paths) {
234
234
  const found = {};
235
235
  for (const key of paths) {
236
- if (Object.hasOwn(obj, key)) {
236
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
237
237
  found[key] = obj[key];
238
238
  }
239
239
  }
@@ -4686,7 +4686,7 @@
4686
4686
  const slotIcon = vue.ref();
4687
4687
  const {
4688
4688
  themeClasses
4689
- } = provideTheme(props);
4689
+ } = useTheme();
4690
4690
  const {
4691
4691
  iconData
4692
4692
  } = useIcon(vue.computed(() => slotIcon.value || props.icon));
@@ -20571,22 +20571,37 @@
20571
20571
  "width": !mobile.value ? column.width : undefined
20572
20572
  }, cellProps, columnCellProps), {
20573
20573
  default: () => {
20574
- if (slots[slotName] && !mobile.value) return slots[slotName]?.(slotProps);
20575
20574
  if (column.key === 'data-table-select') {
20576
- return slots['item.data-table-select']?.(slotProps) ?? vue.createVNode(VCheckboxBtn, {
20575
+ return slots['item.data-table-select']?.({
20576
+ ...slotProps,
20577
+ props: {
20578
+ disabled: !item.selectable,
20579
+ modelValue: isSelected([item]),
20580
+ onClick: vue.withModifiers(() => toggleSelect(item), ['stop'])
20581
+ }
20582
+ }) ?? vue.createVNode(VCheckboxBtn, {
20577
20583
  "disabled": !item.selectable,
20578
20584
  "modelValue": isSelected([item]),
20579
20585
  "onClick": vue.withModifiers(event => toggleSelect(item, props.index, event), ['stop'])
20580
20586
  }, null);
20581
20587
  }
20582
20588
  if (column.key === 'data-table-expand') {
20583
- return slots['item.data-table-expand']?.(slotProps) ?? vue.createVNode(VBtn, {
20589
+ return slots['item.data-table-expand']?.({
20590
+ ...slotProps,
20591
+ props: {
20592
+ icon: isExpanded(item) ? '$collapse' : '$expand',
20593
+ size: 'small',
20594
+ variant: 'text',
20595
+ onClick: vue.withModifiers(() => toggleExpand(item), ['stop'])
20596
+ }
20597
+ }) ?? vue.createVNode(VBtn, {
20584
20598
  "icon": isExpanded(item) ? '$collapse' : '$expand',
20585
20599
  "size": "small",
20586
20600
  "variant": "text",
20587
20601
  "onClick": vue.withModifiers(() => toggleExpand(item), ['stop'])
20588
20602
  }, null);
20589
20603
  }
20604
+ if (slots[slotName] && !mobile.value) return slots[slotName](slotProps);
20590
20605
  const displayValue = vue.toDisplayString(slotProps.value);
20591
20606
  return !mobile.value ? displayValue : vue.createVNode(vue.Fragment, null, [vue.createVNode("div", {
20592
20607
  "class": "v-data-table__td-title"
@@ -21929,7 +21944,7 @@
21929
21944
  }, 'calendar');
21930
21945
  function useCalendar(props) {
21931
21946
  const adapter = useDate();
21932
- const model = useProxiedModel(props, 'modelValue', [], v => wrapInArray(v));
21947
+ const model = useProxiedModel(props, 'modelValue', [], v => wrapInArray(v).map(i => adapter.date(i)));
21933
21948
  const displayValue = vue.computed(() => {
21934
21949
  if (props.displayValue) return adapter.date(props.displayValue);
21935
21950
  if (model.value.length > 0) return adapter.date(model.value[0]);
@@ -22442,7 +22457,7 @@
22442
22457
  const {
22443
22458
  rtlClasses
22444
22459
  } = useRtl();
22445
- const model = useProxiedModel(props, 'modelValue', undefined, v => wrapInArray(v), v => props.multiple ? v : v[0]);
22460
+ const model = useProxiedModel(props, 'modelValue', undefined, v => wrapInArray(v).map(i => adapter.date(i)), v => props.multiple ? v : v[0]);
22446
22461
  const viewMode = useProxiedModel(props, 'viewMode');
22447
22462
  // const inputMode = useProxiedModel(props, 'inputMode')
22448
22463
 
@@ -28920,12 +28935,15 @@
28920
28935
  // Types
28921
28936
 
28922
28937
  const makeVDateInputProps = propsFactory({
28938
+ displayFormat: [Function, String],
28923
28939
  location: {
28924
28940
  type: String,
28925
28941
  default: 'bottom start'
28926
28942
  },
28927
28943
  ...makeFocusProps(),
28928
- ...makeVConfirmEditProps(),
28944
+ ...makeVConfirmEditProps({
28945
+ hideActions: true
28946
+ }),
28929
28947
  ...makeVTextFieldProps({
28930
28948
  placeholder: 'mm/dd/yyyy',
28931
28949
  prependIcon: '$calendar'
@@ -28939,10 +28957,13 @@
28939
28957
  name: 'VDateInput',
28940
28958
  props: makeVDateInputProps(),
28941
28959
  emits: {
28960
+ save: value => true,
28961
+ cancel: () => true,
28942
28962
  'update:modelValue': val => true
28943
28963
  },
28944
28964
  setup(props, _ref) {
28945
28965
  let {
28966
+ emit,
28946
28967
  slots
28947
28968
  } = _ref;
28948
28969
  const {
@@ -28957,6 +28978,12 @@
28957
28978
  const model = useProxiedModel(props, 'modelValue', props.multiple ? [] : null, val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val, val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val);
28958
28979
  const menu = vue.shallowRef(false);
28959
28980
  const vDateInputRef = vue.ref();
28981
+ function format(date) {
28982
+ if (typeof props.displayFormat === 'function') {
28983
+ return props.displayFormat(date);
28984
+ }
28985
+ return adapter.format(date, props.displayFormat ?? 'keyboardDate');
28986
+ }
28960
28987
  const display = vue.computed(() => {
28961
28988
  const value = wrapInArray(model.value);
28962
28989
  if (!value.length) return null;
@@ -28966,9 +28993,10 @@
28966
28993
  if (props.multiple === 'range') {
28967
28994
  const start = value[0];
28968
28995
  const end = value[value.length - 1];
28969
- return adapter.isValid(start) && adapter.isValid(end) ? `${adapter.format(adapter.date(start), 'keyboardDate')} - ${adapter.format(adapter.date(end), 'keyboardDate')}` : '';
28996
+ if (!adapter.isValid(start) || !adapter.isValid(end)) return '';
28997
+ return `${format(adapter.date(start))} - ${format(adapter.date(end))}`;
28970
28998
  }
28971
- return adapter.isValid(model.value) ? adapter.format(adapter.date(model.value), 'keyboardDate') : '';
28999
+ return adapter.isValid(model.value) ? format(adapter.date(model.value)) : '';
28972
29000
  });
28973
29001
  const isInteractive = vue.computed(() => !props.disabled && !props.readonly);
28974
29002
  function onKeydown(e) {
@@ -28985,10 +29013,15 @@
28985
29013
  e.stopPropagation();
28986
29014
  menu.value = true;
28987
29015
  }
28988
- function onSave() {
29016
+ function onCancel() {
29017
+ emit('cancel');
28989
29018
  menu.value = false;
28990
29019
  }
28991
- function onUpdateModel(value) {
29020
+ function onSave(value) {
29021
+ emit('save', value);
29022
+ menu.value = false;
29023
+ }
29024
+ function onUpdateDisplayModel(value) {
28992
29025
  if (value != null) return;
28993
29026
  model.value = null;
28994
29027
  }
@@ -29008,7 +29041,7 @@
29008
29041
  "onBlur": blur,
29009
29042
  "onClick:control": isInteractive.value ? onClick : undefined,
29010
29043
  "onClick:prepend": isInteractive.value ? onClick : undefined,
29011
- "onUpdate:modelValue": onUpdateModel
29044
+ "onUpdate:modelValue": onUpdateDisplayModel
29012
29045
  }), {
29013
29046
  ...slots,
29014
29047
  default: () => vue.createVNode(vue.Fragment, null, [vue.createVNode(VMenu, {
@@ -29025,7 +29058,7 @@
29025
29058
  "modelValue": model.value,
29026
29059
  "onUpdate:modelValue": $event => model.value = $event,
29027
29060
  "onSave": onSave,
29028
- "onCancel": () => menu.value = false
29061
+ "onCancel": onCancel
29029
29062
  }), {
29030
29063
  default: _ref2 => {
29031
29064
  let {
@@ -29035,16 +29068,21 @@
29035
29068
  cancel,
29036
29069
  isPristine
29037
29070
  } = _ref2;
29071
+ function onUpdateModel(value) {
29072
+ if (!props.hideActions) {
29073
+ proxyModel.value = value;
29074
+ } else {
29075
+ model.value = value;
29076
+ if (!props.multiple) {
29077
+ menu.value = false;
29078
+ }
29079
+ }
29080
+ emit('save', value);
29081
+ vDateInputRef.value?.blur();
29082
+ }
29038
29083
  return vue.createVNode(VDatePicker, vue.mergeProps(datePickerProps, {
29039
29084
  "modelValue": props.hideActions ? model.value : proxyModel.value,
29040
- "onUpdate:modelValue": val => {
29041
- if (!props.hideActions) {
29042
- proxyModel.value = val;
29043
- } else {
29044
- model.value = val;
29045
- if (!props.multiple) menu.value = false;
29046
- }
29047
- },
29085
+ "onUpdate:modelValue": value => onUpdateModel(value),
29048
29086
  "onMousedown": e => e.preventDefault()
29049
29087
  }), {
29050
29088
  actions: !props.hideActions ? () => slots.actions?.({
@@ -31276,7 +31314,7 @@
31276
31314
  };
31277
31315
  });
31278
31316
  }
31279
- const version$1 = "3.8.0-beta.0-dev.2025-03-24";
31317
+ const version$1 = "3.8.0-beta.0-dev.2025-03-25";
31280
31318
  createVuetify$1.version = version$1;
31281
31319
 
31282
31320
  // Vue's inject() can only be used in setup
@@ -31561,7 +31599,7 @@
31561
31599
 
31562
31600
  /* eslint-disable local-rules/sort-imports */
31563
31601
 
31564
- const version = "3.8.0-beta.0-dev.2025-03-24";
31602
+ const version = "3.8.0-beta.0-dev.2025-03-25";
31565
31603
 
31566
31604
  /* eslint-disable local-rules/sort-imports */
31567
31605