@vuetify/nightly 3.8.0-beta.0-dev.2025-03-25 → 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 +77 -33
- package/dist/json/attributes.json +3075 -3067
- package/dist/json/importMap-labs.json +28 -28
- package/dist/json/importMap.json +156 -156
- package/dist/json/tags.json +2 -0
- package/dist/json/web-types.json +5769 -5750
- package/dist/vuetify-labs.cjs +41 -6
- package/dist/vuetify-labs.css +5087 -5087
- package/dist/vuetify-labs.d.ts +76 -57
- package/dist/vuetify-labs.esm.js +41 -6
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +41 -6
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +3 -3
- package/dist/vuetify.css +5093 -5093
- package/dist/vuetify.d.ts +57 -57
- package/dist/vuetify.esm.js +3 -3
- package/dist/vuetify.js +3 -3
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +3 -3
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +57 -57
- package/lib/framework.js +1 -1
- package/lib/labs/VDateInput/VDateInput.d.ts +35 -0
- package/lib/labs/VDateInput/VDateInput.js +40 -4
- package/lib/labs/VDateInput/VDateInput.js.map +1 -1
- package/package.json +1 -1
package/dist/vuetify-labs.cjs
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
|
*/
|
@@ -28940,6 +28940,7 @@
|
|
28940
28940
|
type: String,
|
28941
28941
|
default: 'bottom start'
|
28942
28942
|
},
|
28943
|
+
...makeDisplayProps(),
|
28943
28944
|
...makeFocusProps(),
|
28944
28945
|
...makeVConfirmEditProps({
|
28945
28946
|
hideActions: true
|
@@ -28970,6 +28971,9 @@
|
|
28970
28971
|
t
|
28971
28972
|
} = useLocale();
|
28972
28973
|
const adapter = useDate();
|
28974
|
+
const {
|
28975
|
+
mobile
|
28976
|
+
} = useDisplay();
|
28973
28977
|
const {
|
28974
28978
|
isFocused,
|
28975
28979
|
focus,
|
@@ -28977,6 +28981,7 @@
|
|
28977
28981
|
} = useFocus(props);
|
28978
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);
|
28979
28983
|
const menu = vue.shallowRef(false);
|
28984
|
+
const isEditingInput = vue.shallowRef(false);
|
28980
28985
|
const vDateInputRef = vue.ref();
|
28981
28986
|
function format(date) {
|
28982
28987
|
if (typeof props.displayFormat === 'function') {
|
@@ -28998,7 +29003,17 @@
|
|
28998
29003
|
}
|
28999
29004
|
return adapter.isValid(model.value) ? format(adapter.date(model.value)) : '';
|
29000
29005
|
});
|
29006
|
+
const inputmode = vue.computed(() => {
|
29007
|
+
if (!mobile.value) return undefined;
|
29008
|
+
if (isEditingInput.value) return 'text';
|
29009
|
+
return 'none';
|
29010
|
+
});
|
29001
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
|
+
});
|
29002
29017
|
function onKeydown(e) {
|
29003
29018
|
if (e.key !== 'Enter') return;
|
29004
29019
|
if (!menu.value || !isFocused.value) {
|
@@ -29011,11 +29026,16 @@
|
|
29011
29026
|
function onClick(e) {
|
29012
29027
|
e.preventDefault();
|
29013
29028
|
e.stopPropagation();
|
29014
|
-
menu.value
|
29029
|
+
if (menu.value && mobile.value) {
|
29030
|
+
isEditingInput.value = true;
|
29031
|
+
} else {
|
29032
|
+
menu.value = true;
|
29033
|
+
}
|
29015
29034
|
}
|
29016
29035
|
function onCancel() {
|
29017
29036
|
emit('cancel');
|
29018
29037
|
menu.value = false;
|
29038
|
+
isEditingInput.value = false;
|
29019
29039
|
}
|
29020
29040
|
function onSave(value) {
|
29021
29041
|
emit('save', value);
|
@@ -29025,6 +29045,19 @@
|
|
29025
29045
|
if (value != null) return;
|
29026
29046
|
model.value = null;
|
29027
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
|
+
}
|
29028
29061
|
useRender(() => {
|
29029
29062
|
const confirmEditProps = VConfirmEdit.filterProps(props);
|
29030
29063
|
const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']));
|
@@ -29035,10 +29068,12 @@
|
|
29035
29068
|
"class": props.class,
|
29036
29069
|
"style": props.style,
|
29037
29070
|
"modelValue": display.value,
|
29071
|
+
"inputmode": inputmode.value,
|
29072
|
+
"readonly": isReadonly.value,
|
29038
29073
|
"onKeydown": isInteractive.value ? onKeydown : undefined,
|
29039
29074
|
"focused": menu.value || isFocused.value,
|
29040
29075
|
"onFocus": focus,
|
29041
|
-
"onBlur":
|
29076
|
+
"onBlur": onBlur,
|
29042
29077
|
"onClick:control": isInteractive.value ? onClick : undefined,
|
29043
29078
|
"onClick:prepend": isInteractive.value ? onClick : undefined,
|
29044
29079
|
"onUpdate:modelValue": onUpdateDisplayModel
|
@@ -29046,7 +29081,7 @@
|
|
29046
29081
|
...slots,
|
29047
29082
|
default: () => vue.createVNode(vue.Fragment, null, [vue.createVNode(VMenu, {
|
29048
29083
|
"modelValue": menu.value,
|
29049
|
-
"onUpdate:modelValue": $event => menu.value = $event,
|
29084
|
+
"onUpdate:modelValue": [$event => menu.value = $event, onUpdateMenuModel],
|
29050
29085
|
"activator": "parent",
|
29051
29086
|
"min-width": "0",
|
29052
29087
|
"eager": isFocused.value,
|
@@ -31314,7 +31349,7 @@
|
|
31314
31349
|
};
|
31315
31350
|
});
|
31316
31351
|
}
|
31317
|
-
const version$1 = "3.8.0-beta.0-dev.2025-03-
|
31352
|
+
const version$1 = "3.8.0-beta.0-dev.2025-03-26";
|
31318
31353
|
createVuetify$1.version = version$1;
|
31319
31354
|
|
31320
31355
|
// Vue's inject() can only be used in setup
|
@@ -31599,7 +31634,7 @@
|
|
31599
31634
|
|
31600
31635
|
/* eslint-disable local-rules/sort-imports */
|
31601
31636
|
|
31602
|
-
const version = "3.8.0-beta.0-dev.2025-03-
|
31637
|
+
const version = "3.8.0-beta.0-dev.2025-03-26";
|
31603
31638
|
|
31604
31639
|
/* eslint-disable local-rules/sort-imports */
|
31605
31640
|
|