@vuetify/nightly 3.8.0-beta.0-dev.2025-03-24 → 3.8.0-beta.0-dev.2025-03-26
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.
- package/CHANGELOG.md +83 -3
- package/dist/json/attributes.json +1534 -1522
- package/dist/json/importMap-labs.json +30 -30
- package/dist/json/importMap.json +138 -138
- package/dist/json/tags.json +3 -0
- package/dist/json/web-types.json +3219 -3169
- package/dist/vuetify-labs.cjs +101 -28
- package/dist/vuetify-labs.css +3682 -3682
- package/dist/vuetify-labs.d.ts +124 -81
- package/dist/vuetify-labs.esm.js +101 -28
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +101 -28
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +25 -10
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +5460 -5460
- package/dist/vuetify.d.ts +82 -79
- package/dist/vuetify.esm.js +25 -10
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +25 -10
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +10 -10
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.d.ts +4 -4
- package/lib/components/VDataTable/VDataTableRow.d.ts +9 -6
- package/lib/components/VDataTable/VDataTableRow.js +18 -3
- package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
- package/lib/components/VDataTable/VDataTableRows.d.ts +4 -4
- package/lib/components/VDataTable/VDataTableServer.d.ts +4 -4
- package/lib/components/VDataTable/VDataTableVirtual.d.ts +4 -4
- package/lib/components/VDatePicker/VDatePicker.js +1 -1
- package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
- package/lib/components/VIcon/VIcon.js +2 -2
- package/lib/components/VIcon/VIcon.js.map +1 -1
- package/lib/composables/calendar.js +1 -1
- package/lib/composables/calendar.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +47 -47
- package/lib/framework.js +1 -1
- package/lib/labs/VDateInput/VDateInput.d.ts +70 -3
- package/lib/labs/VDateInput/VDateInput.js +78 -19
- package/lib/labs/VDateInput/VDateInput.js.map +1 -1
- package/lib/util/helpers.js +1 -1
- package/lib/util/helpers.js.map +1 -1
- package/package.json +1 -1
package/dist/vuetify-labs.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Vuetify v3.8.0-beta.0-dev.2025-03-
|
2
|
+
* Vuetify v3.8.0-beta.0-dev.2025-03-26
|
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.
|
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
|
-
} =
|
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']?.(
|
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']?.(
|
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,16 @@
|
|
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
|
},
|
28943
|
+
...makeDisplayProps(),
|
28927
28944
|
...makeFocusProps(),
|
28928
|
-
...makeVConfirmEditProps(
|
28945
|
+
...makeVConfirmEditProps({
|
28946
|
+
hideActions: true
|
28947
|
+
}),
|
28929
28948
|
...makeVTextFieldProps({
|
28930
28949
|
placeholder: 'mm/dd/yyyy',
|
28931
28950
|
prependIcon: '$calendar'
|
@@ -28939,16 +28958,22 @@
|
|
28939
28958
|
name: 'VDateInput',
|
28940
28959
|
props: makeVDateInputProps(),
|
28941
28960
|
emits: {
|
28961
|
+
save: value => true,
|
28962
|
+
cancel: () => true,
|
28942
28963
|
'update:modelValue': val => true
|
28943
28964
|
},
|
28944
28965
|
setup(props, _ref) {
|
28945
28966
|
let {
|
28967
|
+
emit,
|
28946
28968
|
slots
|
28947
28969
|
} = _ref;
|
28948
28970
|
const {
|
28949
28971
|
t
|
28950
28972
|
} = useLocale();
|
28951
28973
|
const adapter = useDate();
|
28974
|
+
const {
|
28975
|
+
mobile
|
28976
|
+
} = useDisplay();
|
28952
28977
|
const {
|
28953
28978
|
isFocused,
|
28954
28979
|
focus,
|
@@ -28956,7 +28981,14 @@
|
|
28956
28981
|
} = useFocus(props);
|
28957
28982
|
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
28983
|
const menu = vue.shallowRef(false);
|
28984
|
+
const isEditingInput = vue.shallowRef(false);
|
28959
28985
|
const vDateInputRef = vue.ref();
|
28986
|
+
function format(date) {
|
28987
|
+
if (typeof props.displayFormat === 'function') {
|
28988
|
+
return props.displayFormat(date);
|
28989
|
+
}
|
28990
|
+
return adapter.format(date, props.displayFormat ?? 'keyboardDate');
|
28991
|
+
}
|
28960
28992
|
const display = vue.computed(() => {
|
28961
28993
|
const value = wrapInArray(model.value);
|
28962
28994
|
if (!value.length) return null;
|
@@ -28966,11 +28998,22 @@
|
|
28966
28998
|
if (props.multiple === 'range') {
|
28967
28999
|
const start = value[0];
|
28968
29000
|
const end = value[value.length - 1];
|
28969
|
-
|
29001
|
+
if (!adapter.isValid(start) || !adapter.isValid(end)) return '';
|
29002
|
+
return `${format(adapter.date(start))} - ${format(adapter.date(end))}`;
|
28970
29003
|
}
|
28971
|
-
return adapter.isValid(model.value) ?
|
29004
|
+
return adapter.isValid(model.value) ? format(adapter.date(model.value)) : '';
|
29005
|
+
});
|
29006
|
+
const inputmode = vue.computed(() => {
|
29007
|
+
if (!mobile.value) return undefined;
|
29008
|
+
if (isEditingInput.value) return 'text';
|
29009
|
+
return 'none';
|
28972
29010
|
});
|
28973
29011
|
const isInteractive = vue.computed(() => !props.disabled && !props.readonly);
|
29012
|
+
const isReadonly = vue.computed(() => !(mobile.value && isEditingInput.value) && props.readonly);
|
29013
|
+
vue.watch(menu, val => {
|
29014
|
+
if (val) return;
|
29015
|
+
isEditingInput.value = false;
|
29016
|
+
});
|
28974
29017
|
function onKeydown(e) {
|
28975
29018
|
if (e.key !== 'Enter') return;
|
28976
29019
|
if (!menu.value || !isFocused.value) {
|
@@ -28983,15 +29026,38 @@
|
|
28983
29026
|
function onClick(e) {
|
28984
29027
|
e.preventDefault();
|
28985
29028
|
e.stopPropagation();
|
28986
|
-
menu.value
|
29029
|
+
if (menu.value && mobile.value) {
|
29030
|
+
isEditingInput.value = true;
|
29031
|
+
} else {
|
29032
|
+
menu.value = true;
|
29033
|
+
}
|
29034
|
+
}
|
29035
|
+
function onCancel() {
|
29036
|
+
emit('cancel');
|
29037
|
+
menu.value = false;
|
29038
|
+
isEditingInput.value = false;
|
28987
29039
|
}
|
28988
|
-
function onSave() {
|
29040
|
+
function onSave(value) {
|
29041
|
+
emit('save', value);
|
28989
29042
|
menu.value = false;
|
28990
29043
|
}
|
28991
|
-
function
|
29044
|
+
function onUpdateDisplayModel(value) {
|
28992
29045
|
if (value != null) return;
|
28993
29046
|
model.value = null;
|
28994
29047
|
}
|
29048
|
+
function onUpdateMenuModel(isMenuOpen) {
|
29049
|
+
if (isMenuOpen) return;
|
29050
|
+
isEditingInput.value = false;
|
29051
|
+
}
|
29052
|
+
function onBlur() {
|
29053
|
+
blur();
|
29054
|
+
|
29055
|
+
// When in mobile mode and editing is done (due to keyboard dismissal), close the menu
|
29056
|
+
if (mobile.value && isEditingInput.value && !isFocused.value) {
|
29057
|
+
menu.value = false;
|
29058
|
+
isEditingInput.value = false;
|
29059
|
+
}
|
29060
|
+
}
|
28995
29061
|
useRender(() => {
|
28996
29062
|
const confirmEditProps = VConfirmEdit.filterProps(props);
|
28997
29063
|
const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']));
|
@@ -29002,18 +29068,20 @@
|
|
29002
29068
|
"class": props.class,
|
29003
29069
|
"style": props.style,
|
29004
29070
|
"modelValue": display.value,
|
29071
|
+
"inputmode": inputmode.value,
|
29072
|
+
"readonly": isReadonly.value,
|
29005
29073
|
"onKeydown": isInteractive.value ? onKeydown : undefined,
|
29006
29074
|
"focused": menu.value || isFocused.value,
|
29007
29075
|
"onFocus": focus,
|
29008
|
-
"onBlur":
|
29076
|
+
"onBlur": onBlur,
|
29009
29077
|
"onClick:control": isInteractive.value ? onClick : undefined,
|
29010
29078
|
"onClick:prepend": isInteractive.value ? onClick : undefined,
|
29011
|
-
"onUpdate:modelValue":
|
29079
|
+
"onUpdate:modelValue": onUpdateDisplayModel
|
29012
29080
|
}), {
|
29013
29081
|
...slots,
|
29014
29082
|
default: () => vue.createVNode(vue.Fragment, null, [vue.createVNode(VMenu, {
|
29015
29083
|
"modelValue": menu.value,
|
29016
|
-
"onUpdate:modelValue": $event => menu.value = $event,
|
29084
|
+
"onUpdate:modelValue": [$event => menu.value = $event, onUpdateMenuModel],
|
29017
29085
|
"activator": "parent",
|
29018
29086
|
"min-width": "0",
|
29019
29087
|
"eager": isFocused.value,
|
@@ -29025,7 +29093,7 @@
|
|
29025
29093
|
"modelValue": model.value,
|
29026
29094
|
"onUpdate:modelValue": $event => model.value = $event,
|
29027
29095
|
"onSave": onSave,
|
29028
|
-
"onCancel":
|
29096
|
+
"onCancel": onCancel
|
29029
29097
|
}), {
|
29030
29098
|
default: _ref2 => {
|
29031
29099
|
let {
|
@@ -29035,16 +29103,21 @@
|
|
29035
29103
|
cancel,
|
29036
29104
|
isPristine
|
29037
29105
|
} = _ref2;
|
29106
|
+
function onUpdateModel(value) {
|
29107
|
+
if (!props.hideActions) {
|
29108
|
+
proxyModel.value = value;
|
29109
|
+
} else {
|
29110
|
+
model.value = value;
|
29111
|
+
if (!props.multiple) {
|
29112
|
+
menu.value = false;
|
29113
|
+
}
|
29114
|
+
}
|
29115
|
+
emit('save', value);
|
29116
|
+
vDateInputRef.value?.blur();
|
29117
|
+
}
|
29038
29118
|
return vue.createVNode(VDatePicker, vue.mergeProps(datePickerProps, {
|
29039
29119
|
"modelValue": props.hideActions ? model.value : proxyModel.value,
|
29040
|
-
"onUpdate:modelValue":
|
29041
|
-
if (!props.hideActions) {
|
29042
|
-
proxyModel.value = val;
|
29043
|
-
} else {
|
29044
|
-
model.value = val;
|
29045
|
-
if (!props.multiple) menu.value = false;
|
29046
|
-
}
|
29047
|
-
},
|
29120
|
+
"onUpdate:modelValue": value => onUpdateModel(value),
|
29048
29121
|
"onMousedown": e => e.preventDefault()
|
29049
29122
|
}), {
|
29050
29123
|
actions: !props.hideActions ? () => slots.actions?.({
|
@@ -31276,7 +31349,7 @@
|
|
31276
31349
|
};
|
31277
31350
|
});
|
31278
31351
|
}
|
31279
|
-
const version$1 = "3.8.0-beta.0-dev.2025-03-
|
31352
|
+
const version$1 = "3.8.0-beta.0-dev.2025-03-26";
|
31280
31353
|
createVuetify$1.version = version$1;
|
31281
31354
|
|
31282
31355
|
// Vue's inject() can only be used in setup
|
@@ -31561,7 +31634,7 @@
|
|
31561
31634
|
|
31562
31635
|
/* eslint-disable local-rules/sort-imports */
|
31563
31636
|
|
31564
|
-
const version = "3.8.0-beta.0-dev.2025-03-
|
31637
|
+
const version = "3.8.0-beta.0-dev.2025-03-26";
|
31565
31638
|
|
31566
31639
|
/* eslint-disable local-rules/sort-imports */
|
31567
31640
|
|