@vuetify/nightly 3.7.18-master.2025-03-24 → 3.7.19-master.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.
@@ -68762,6 +68762,7 @@ declare const VDateInput: {
68762
68762
  style: vue.StyleValue;
68763
68763
  title: string;
68764
68764
  autofocus: boolean;
68765
+ mobile: boolean | null;
68765
68766
  disabled: boolean;
68766
68767
  readonly: boolean | null;
68767
68768
  tag: string;
@@ -68824,6 +68825,7 @@ declare const VDateInput: {
68824
68825
  theme?: string | undefined;
68825
68826
  elevation?: string | number | undefined;
68826
68827
  counter?: string | number | boolean | undefined;
68828
+ mobileBreakpoint?: number | DisplayBreakpoint | undefined;
68827
68829
  'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
68828
68830
  modelValue?: any;
68829
68831
  validateOn?: ("eager" | "lazy" | ("input" | "blur" | "submit" | "invalid-input") | "input lazy" | "blur lazy" | "submit lazy" | "invalid-input lazy" | "input eager" | "blur eager" | "submit eager" | "invalid-input eager" | "lazy input" | "lazy blur" | "lazy submit" | "lazy invalid-input" | "eager input" | "eager blur" | "eager submit" | "eager invalid-input") | undefined;
@@ -68847,6 +68849,7 @@ declare const VDateInput: {
68847
68849
  modelModifiers?: Record<string, boolean> | undefined;
68848
68850
  firstDayOfWeek?: string | number | undefined;
68849
68851
  allowedDates?: unknown[] | ((date: unknown) => boolean) | undefined;
68852
+ displayFormat?: string | Function | undefined;
68850
68853
  } & {
68851
68854
  $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
68852
68855
  message?: ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
@@ -68905,8 +68908,12 @@ declare const VDateInput: {
68905
68908
  "v-slot:actions"?: false | ((arg: VDateInputActionsSlot) => vue.VNodeChild) | undefined;
68906
68909
  "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
68907
68910
  } & {
68911
+ onCancel?: (() => any) | undefined;
68908
68912
  "onUpdate:modelValue"?: ((val: string) => any) | undefined;
68913
+ onSave?: ((value: string) => any) | undefined;
68909
68914
  }, any, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
68915
+ save: (value: string) => true;
68916
+ cancel: () => true;
68910
68917
  'update:modelValue': (val: string) => true;
68911
68918
  }, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
68912
68919
  flat: boolean;
@@ -68922,6 +68929,7 @@ declare const VDateInput: {
68922
68929
  style: vue.StyleValue;
68923
68930
  title: string;
68924
68931
  autofocus: boolean;
68932
+ mobile: boolean | null;
68925
68933
  disabled: boolean;
68926
68934
  readonly: boolean | null;
68927
68935
  tag: string;
@@ -68984,6 +68992,7 @@ declare const VDateInput: {
68984
68992
  theme?: string | undefined;
68985
68993
  elevation?: string | number | undefined;
68986
68994
  counter?: string | number | boolean | undefined;
68995
+ mobileBreakpoint?: number | DisplayBreakpoint | undefined;
68987
68996
  'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
68988
68997
  modelValue?: any;
68989
68998
  validateOn?: ("eager" | "lazy" | ("input" | "blur" | "submit" | "invalid-input") | "input lazy" | "blur lazy" | "submit lazy" | "invalid-input lazy" | "input eager" | "blur eager" | "submit eager" | "invalid-input eager" | "lazy input" | "lazy blur" | "lazy submit" | "lazy invalid-input" | "eager input" | "eager blur" | "eager submit" | "eager invalid-input") | undefined;
@@ -69007,6 +69016,7 @@ declare const VDateInput: {
69007
69016
  modelModifiers?: Record<string, boolean> | undefined;
69008
69017
  firstDayOfWeek?: string | number | undefined;
69009
69018
  allowedDates?: unknown[] | ((date: unknown) => boolean) | undefined;
69019
+ displayFormat?: string | Function | undefined;
69010
69020
  } & {
69011
69021
  $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
69012
69022
  message?: ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
@@ -69065,7 +69075,9 @@ declare const VDateInput: {
69065
69075
  "v-slot:actions"?: false | ((arg: VDateInputActionsSlot) => vue.VNodeChild) | undefined;
69066
69076
  "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
69067
69077
  } & {
69078
+ onCancel?: (() => any) | undefined;
69068
69079
  "onUpdate:modelValue"?: ((val: string) => any) | undefined;
69080
+ onSave?: ((value: string) => any) | undefined;
69069
69081
  }, {
69070
69082
  flat: boolean;
69071
69083
  reverse: boolean;
@@ -69080,6 +69092,7 @@ declare const VDateInput: {
69080
69092
  style: vue.StyleValue;
69081
69093
  title: string;
69082
69094
  autofocus: boolean;
69095
+ mobile: boolean | null;
69083
69096
  disabled: boolean;
69084
69097
  readonly: boolean | null;
69085
69098
  tag: string;
@@ -69157,6 +69170,7 @@ declare const VDateInput: {
69157
69170
  style: vue.StyleValue;
69158
69171
  title: string;
69159
69172
  autofocus: boolean;
69173
+ mobile: boolean | null;
69160
69174
  disabled: boolean;
69161
69175
  readonly: boolean | null;
69162
69176
  tag: string;
@@ -69219,6 +69233,7 @@ declare const VDateInput: {
69219
69233
  theme?: string | undefined;
69220
69234
  elevation?: string | number | undefined;
69221
69235
  counter?: string | number | boolean | undefined;
69236
+ mobileBreakpoint?: number | DisplayBreakpoint | undefined;
69222
69237
  'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
69223
69238
  modelValue?: any;
69224
69239
  validateOn?: ("eager" | "lazy" | ("input" | "blur" | "submit" | "invalid-input") | "input lazy" | "blur lazy" | "submit lazy" | "invalid-input lazy" | "input eager" | "blur eager" | "submit eager" | "invalid-input eager" | "lazy input" | "lazy blur" | "lazy submit" | "lazy invalid-input" | "eager input" | "eager blur" | "eager submit" | "eager invalid-input") | undefined;
@@ -69242,6 +69257,7 @@ declare const VDateInput: {
69242
69257
  modelModifiers?: Record<string, boolean> | undefined;
69243
69258
  firstDayOfWeek?: string | number | undefined;
69244
69259
  allowedDates?: unknown[] | ((date: unknown) => boolean) | undefined;
69260
+ displayFormat?: string | Function | undefined;
69245
69261
  } & {
69246
69262
  $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
69247
69263
  message?: ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
@@ -69300,7 +69316,9 @@ declare const VDateInput: {
69300
69316
  "v-slot:actions"?: false | ((arg: VDateInputActionsSlot) => vue.VNodeChild) | undefined;
69301
69317
  "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
69302
69318
  } & {
69319
+ onCancel?: (() => any) | undefined;
69303
69320
  "onUpdate:modelValue"?: ((val: string) => any) | undefined;
69321
+ onSave?: ((value: string) => any) | undefined;
69304
69322
  }, any, {}, {}, {}, {
69305
69323
  flat: boolean;
69306
69324
  reverse: boolean;
@@ -69315,6 +69333,7 @@ declare const VDateInput: {
69315
69333
  style: vue.StyleValue;
69316
69334
  title: string;
69317
69335
  autofocus: boolean;
69336
+ mobile: boolean | null;
69318
69337
  disabled: boolean;
69319
69338
  readonly: boolean | null;
69320
69339
  tag: string;
@@ -69371,6 +69390,7 @@ declare const VDateInput: {
69371
69390
  style: vue.StyleValue;
69372
69391
  title: string;
69373
69392
  autofocus: boolean;
69393
+ mobile: boolean | null;
69374
69394
  disabled: boolean;
69375
69395
  readonly: boolean | null;
69376
69396
  tag: string;
@@ -69433,6 +69453,7 @@ declare const VDateInput: {
69433
69453
  theme?: string | undefined;
69434
69454
  elevation?: string | number | undefined;
69435
69455
  counter?: string | number | boolean | undefined;
69456
+ mobileBreakpoint?: number | DisplayBreakpoint | undefined;
69436
69457
  'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
69437
69458
  modelValue?: any;
69438
69459
  validateOn?: ("eager" | "lazy" | ("input" | "blur" | "submit" | "invalid-input") | "input lazy" | "blur lazy" | "submit lazy" | "invalid-input lazy" | "input eager" | "blur eager" | "submit eager" | "invalid-input eager" | "lazy input" | "lazy blur" | "lazy submit" | "lazy invalid-input" | "eager input" | "eager blur" | "eager submit" | "eager invalid-input") | undefined;
@@ -69456,6 +69477,7 @@ declare const VDateInput: {
69456
69477
  modelModifiers?: Record<string, boolean> | undefined;
69457
69478
  firstDayOfWeek?: string | number | undefined;
69458
69479
  allowedDates?: unknown[] | ((date: unknown) => boolean) | undefined;
69480
+ displayFormat?: string | Function | undefined;
69459
69481
  } & {
69460
69482
  $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
69461
69483
  message?: ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
@@ -69514,8 +69536,12 @@ declare const VDateInput: {
69514
69536
  "v-slot:actions"?: false | ((arg: VDateInputActionsSlot) => vue.VNodeChild) | undefined;
69515
69537
  "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
69516
69538
  } & {
69539
+ onCancel?: (() => any) | undefined;
69517
69540
  "onUpdate:modelValue"?: ((val: string) => any) | undefined;
69541
+ onSave?: ((value: string) => any) | undefined;
69518
69542
  }, any, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
69543
+ save: (value: string) => true;
69544
+ cancel: () => true;
69519
69545
  'update:modelValue': (val: string) => true;
69520
69546
  }, string, {
69521
69547
  flat: boolean;
@@ -69531,6 +69557,7 @@ declare const VDateInput: {
69531
69557
  style: vue.StyleValue;
69532
69558
  title: string;
69533
69559
  autofocus: boolean;
69560
+ mobile: boolean | null;
69534
69561
  disabled: boolean;
69535
69562
  readonly: boolean | null;
69536
69563
  tag: string;
@@ -69803,6 +69830,12 @@ declare const VDateInput: {
69803
69830
  type: StringConstructor;
69804
69831
  default: string;
69805
69832
  };
69833
+ mobile: {
69834
+ type: PropType<boolean | null>;
69835
+ default: boolean;
69836
+ };
69837
+ mobileBreakpoint: PropType<number | DisplayBreakpoint>;
69838
+ displayFormat: (FunctionConstructor | StringConstructor)[];
69806
69839
  hideActions: BooleanConstructor;
69807
69840
  location: {
69808
69841
  type: PropType<StrategyProps["location"]>;
@@ -70024,6 +70057,12 @@ declare const VDateInput: {
70024
70057
  type: StringConstructor;
70025
70058
  default: string;
70026
70059
  };
70060
+ mobile: {
70061
+ type: PropType<boolean | null>;
70062
+ default: boolean;
70063
+ };
70064
+ mobileBreakpoint: PropType<number | DisplayBreakpoint>;
70065
+ displayFormat: (FunctionConstructor | StringConstructor)[];
70027
70066
  hideActions: BooleanConstructor;
70028
70067
  location: {
70029
70068
  type: PropType<StrategyProps["location"]>;
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.7.18-master.2025-03-24
2
+ * Vuetify v3.7.19-master.2025-03-26
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -13265,12 +13265,7 @@ const VAutocomplete = genericComponent()({
13265
13265
  } else {
13266
13266
  if (!props.multiple && search.value == null) model.value = [];
13267
13267
  menu.value = false;
13268
- if (!model.value.some(_ref3 => {
13269
- let {
13270
- title
13271
- } = _ref3;
13272
- return title === search.value;
13273
- })) search.value = '';
13268
+ if (props.multiple || hasSelectionSlot.value) search.value = '';
13274
13269
  selectionIndex.value = -1;
13275
13270
  }
13276
13271
  });
@@ -13357,12 +13352,12 @@ const VAutocomplete = genericComponent()({
13357
13352
  "renderless": true,
13358
13353
  "items": displayItems.value
13359
13354
  }, {
13360
- default: _ref4 => {
13355
+ default: _ref3 => {
13361
13356
  let {
13362
13357
  item,
13363
13358
  index,
13364
13359
  itemRef
13365
- } = _ref4;
13360
+ } = _ref3;
13366
13361
  const itemProps = mergeProps(item.props, {
13367
13362
  ref: itemRef,
13368
13363
  key: item.value,
@@ -13376,10 +13371,10 @@ const VAutocomplete = genericComponent()({
13376
13371
  }) ?? createVNode(VListItem, mergeProps(itemProps, {
13377
13372
  "role": "option"
13378
13373
  }), {
13379
- prepend: _ref5 => {
13374
+ prepend: _ref4 => {
13380
13375
  let {
13381
13376
  isSelected
13382
- } = _ref5;
13377
+ } = _ref4;
13383
13378
  return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
13384
13379
  "key": item.value,
13385
13380
  "modelValue": isSelected,
@@ -28252,11 +28247,13 @@ const VCalendar = genericComponent()({
28252
28247
  // Types
28253
28248
 
28254
28249
  const makeVDateInputProps = propsFactory({
28250
+ displayFormat: [Function, String],
28255
28251
  hideActions: Boolean,
28256
28252
  location: {
28257
28253
  type: String,
28258
28254
  default: 'bottom start'
28259
28255
  },
28256
+ ...makeDisplayProps(),
28260
28257
  ...makeFocusProps(),
28261
28258
  ...makeVConfirmEditProps(),
28262
28259
  ...makeVTextFieldProps({
@@ -28272,16 +28269,22 @@ const VDateInput = genericComponent()({
28272
28269
  name: 'VDateInput',
28273
28270
  props: makeVDateInputProps(),
28274
28271
  emits: {
28272
+ save: value => true,
28273
+ cancel: () => true,
28275
28274
  'update:modelValue': val => true
28276
28275
  },
28277
28276
  setup(props, _ref) {
28278
28277
  let {
28278
+ emit,
28279
28279
  slots
28280
28280
  } = _ref;
28281
28281
  const {
28282
28282
  t
28283
28283
  } = useLocale();
28284
28284
  const adapter = useDate();
28285
+ const {
28286
+ mobile
28287
+ } = useDisplay(props);
28285
28288
  const {
28286
28289
  isFocused,
28287
28290
  focus,
@@ -28289,7 +28292,14 @@ const VDateInput = genericComponent()({
28289
28292
  } = useFocus(props);
28290
28293
  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);
28291
28294
  const menu = shallowRef(false);
28295
+ const isEditingInput = shallowRef(false);
28292
28296
  const vDateInputRef = ref();
28297
+ function format(date) {
28298
+ if (typeof props.displayFormat === 'function') {
28299
+ return props.displayFormat(date);
28300
+ }
28301
+ return adapter.format(date, props.displayFormat ?? 'keyboardDate');
28302
+ }
28293
28303
  const display = computed(() => {
28294
28304
  const value = wrapInArray(model.value);
28295
28305
  if (!value.length) return null;
@@ -28299,11 +28309,22 @@ const VDateInput = genericComponent()({
28299
28309
  if (props.multiple === 'range') {
28300
28310
  const start = value[0];
28301
28311
  const end = value[value.length - 1];
28302
- return adapter.isValid(start) && adapter.isValid(end) ? `${adapter.format(adapter.date(start), 'keyboardDate')} - ${adapter.format(adapter.date(end), 'keyboardDate')}` : '';
28312
+ if (!adapter.isValid(start) || !adapter.isValid(end)) return '';
28313
+ return `${format(adapter.date(start))} - ${format(adapter.date(end))}`;
28303
28314
  }
28304
- return adapter.isValid(model.value) ? adapter.format(adapter.date(model.value), 'keyboardDate') : '';
28315
+ return adapter.isValid(model.value) ? format(adapter.date(model.value)) : '';
28316
+ });
28317
+ const inputmode = computed(() => {
28318
+ if (!mobile.value) return undefined;
28319
+ if (isEditingInput.value) return 'text';
28320
+ return 'none';
28305
28321
  });
28306
28322
  const isInteractive = computed(() => !props.disabled && !props.readonly);
28323
+ const isReadonly = computed(() => !(mobile.value && isEditingInput.value) && props.readonly);
28324
+ watch(menu, val => {
28325
+ if (val) return;
28326
+ isEditingInput.value = false;
28327
+ });
28307
28328
  function onKeydown(e) {
28308
28329
  if (e.key !== 'Enter') return;
28309
28330
  if (!menu.value || !isFocused.value) {
@@ -28311,20 +28332,39 @@ const VDateInput = genericComponent()({
28311
28332
  return;
28312
28333
  }
28313
28334
  const target = e.target;
28314
- model.value = target.value === '' ? null : target.value;
28335
+ model.value = adapter.isValid(target.value) ? target.value : null;
28315
28336
  }
28316
28337
  function onClick(e) {
28317
28338
  e.preventDefault();
28318
28339
  e.stopPropagation();
28319
- menu.value = true;
28340
+ if (menu.value && mobile.value) {
28341
+ isEditingInput.value = true;
28342
+ } else {
28343
+ menu.value = true;
28344
+ }
28345
+ }
28346
+ function onCancel() {
28347
+ emit('cancel');
28348
+ menu.value = false;
28349
+ isEditingInput.value = false;
28320
28350
  }
28321
- function onSave() {
28351
+ function onSave(value) {
28352
+ emit('save', value);
28322
28353
  menu.value = false;
28323
28354
  }
28324
- function onUpdateModel(value) {
28355
+ function onUpdateDisplayModel(value) {
28325
28356
  if (value != null) return;
28326
28357
  model.value = null;
28327
28358
  }
28359
+ function onBlur() {
28360
+ blur();
28361
+
28362
+ // When in mobile mode and editing is done (due to keyboard dismissal), close the menu
28363
+ if (mobile.value && isEditingInput.value && !isFocused.value) {
28364
+ menu.value = false;
28365
+ isEditingInput.value = false;
28366
+ }
28367
+ }
28328
28368
  useRender(() => {
28329
28369
  const confirmEditProps = VConfirmEdit.filterProps(props);
28330
28370
  const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']));
@@ -28335,13 +28375,15 @@ const VDateInput = genericComponent()({
28335
28375
  "class": props.class,
28336
28376
  "style": props.style,
28337
28377
  "modelValue": display.value,
28378
+ "inputmode": inputmode.value,
28379
+ "readonly": isReadonly.value,
28338
28380
  "onKeydown": isInteractive.value ? onKeydown : undefined,
28339
28381
  "focused": menu.value || isFocused.value,
28340
28382
  "onFocus": focus,
28341
- "onBlur": blur,
28383
+ "onBlur": onBlur,
28342
28384
  "onClick:control": isInteractive.value ? onClick : undefined,
28343
28385
  "onClick:prepend": isInteractive.value ? onClick : undefined,
28344
- "onUpdate:modelValue": onUpdateModel
28386
+ "onUpdate:modelValue": onUpdateDisplayModel
28345
28387
  }), {
28346
28388
  ...slots,
28347
28389
  default: () => createVNode(Fragment, null, [createVNode(VMenu, {
@@ -28358,7 +28400,7 @@ const VDateInput = genericComponent()({
28358
28400
  "modelValue": model.value,
28359
28401
  "onUpdate:modelValue": $event => model.value = $event,
28360
28402
  "onSave": onSave,
28361
- "onCancel": () => menu.value = false
28403
+ "onCancel": onCancel
28362
28404
  }), {
28363
28405
  default: _ref2 => {
28364
28406
  let {
@@ -28368,16 +28410,21 @@ const VDateInput = genericComponent()({
28368
28410
  cancel,
28369
28411
  isPristine
28370
28412
  } = _ref2;
28413
+ function onUpdateModel(value) {
28414
+ if (!props.hideActions) {
28415
+ proxyModel.value = value;
28416
+ } else {
28417
+ model.value = value;
28418
+ if (!props.multiple) {
28419
+ menu.value = false;
28420
+ }
28421
+ }
28422
+ emit('save', value);
28423
+ vDateInputRef.value?.blur();
28424
+ }
28371
28425
  return createVNode(VDatePicker, mergeProps(datePickerProps, {
28372
28426
  "modelValue": props.hideActions ? model.value : proxyModel.value,
28373
- "onUpdate:modelValue": val => {
28374
- if (!props.hideActions) {
28375
- proxyModel.value = val;
28376
- } else {
28377
- model.value = val;
28378
- if (!props.multiple) menu.value = false;
28379
- }
28380
- },
28427
+ "onUpdate:modelValue": value => onUpdateModel(value),
28381
28428
  "onMousedown": e => e.preventDefault()
28382
28429
  }), {
28383
28430
  actions: !props.hideActions ? () => slots.actions?.({
@@ -31095,7 +31142,7 @@ function createVuetify$1() {
31095
31142
  goTo
31096
31143
  };
31097
31144
  }
31098
- const version$1 = "3.7.18-master.2025-03-24";
31145
+ const version$1 = "3.7.19-master.2025-03-26";
31099
31146
  createVuetify$1.version = version$1;
31100
31147
 
31101
31148
  // Vue's inject() can only be used in setup
@@ -31348,7 +31395,7 @@ var index = /*#__PURE__*/Object.freeze({
31348
31395
 
31349
31396
  /* eslint-disable local-rules/sort-imports */
31350
31397
 
31351
- const version = "3.7.18-master.2025-03-24";
31398
+ const version = "3.7.19-master.2025-03-26";
31352
31399
 
31353
31400
  /* eslint-disable local-rules/sort-imports */
31354
31401