@vuetify/nightly 3.8.3-master.2025-04-30 → 3.8.3-master.2025-05-02

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.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.3-master.2025-04-30
2
+ * Vuetify v3.8.3-master.2025-05-02
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -18995,7 +18995,7 @@
18995
18995
  index = index ?? currentPage.value.findIndex(i => i.value === item.value);
18996
18996
  if (props.selectStrategy !== 'single' && event?.shiftKey && lastSelectedIndex.value !== null) {
18997
18997
  const [start, end] = [lastSelectedIndex.value, index].sort((a, b) => a - b);
18998
- items.push(...currentPage.value.slice(start, end + 1));
18998
+ items.push(...currentPage.value.slice(start, end + 1).filter(item => item.selectable));
18999
18999
  } else {
19000
19000
  items.push(item);
19001
19001
  lastSelectedIndex.value = index;
@@ -29065,7 +29065,13 @@
29065
29065
  type: String,
29066
29066
  default: 'bottom start'
29067
29067
  },
29068
- ...makeDisplayProps(),
29068
+ updateOn: {
29069
+ type: Array,
29070
+ default: () => ['blur', 'enter']
29071
+ },
29072
+ ...makeDisplayProps({
29073
+ mobile: null
29074
+ }),
29069
29075
  ...makeFocusProps(),
29070
29076
  ...makeVConfirmEditProps({
29071
29077
  hideActions: true
@@ -29104,7 +29110,8 @@
29104
29110
  focus,
29105
29111
  blur
29106
29112
  } = useFocus(props);
29107
- 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);
29113
+ const emptyModelValue = () => props.multiple ? [] : null;
29114
+ const model = useProxiedModel(props, 'modelValue', emptyModelValue(), 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);
29108
29115
  const menu = vue.shallowRef(false);
29109
29116
  const isEditingInput = vue.shallowRef(false);
29110
29117
  const vTextFieldRef = vue.ref();
@@ -29135,7 +29142,10 @@
29135
29142
  return 'none';
29136
29143
  });
29137
29144
  const isInteractive = vue.computed(() => !props.disabled && !props.readonly);
29138
- const isReadonly = vue.computed(() => !(mobile.value && isEditingInput.value) && props.readonly);
29145
+ const isReadonly = vue.computed(() => {
29146
+ if (!props.updateOn.length) return true;
29147
+ return !(mobile.value && isEditingInput.value) && props.readonly;
29148
+ });
29139
29149
  vue.watch(menu, val => {
29140
29150
  if (val) return;
29141
29151
  isEditingInput.value = false;
@@ -29147,8 +29157,9 @@
29147
29157
  menu.value = true;
29148
29158
  return;
29149
29159
  }
29150
- const target = e.target;
29151
- model.value = adapter.isValid(target.value) ? target.value : null;
29160
+ if (props.updateOn.includes('enter')) {
29161
+ onUserInput(e.target);
29162
+ }
29152
29163
  }
29153
29164
  function onClick(e) {
29154
29165
  e.preventDefault();
@@ -29170,9 +29181,12 @@
29170
29181
  }
29171
29182
  function onUpdateDisplayModel(value) {
29172
29183
  if (value != null) return;
29173
- model.value = null;
29184
+ model.value = emptyModelValue();
29174
29185
  }
29175
- function onBlur() {
29186
+ function onBlur(e) {
29187
+ if (props.updateOn.includes('blur')) {
29188
+ onUserInput(e.target);
29189
+ }
29176
29190
  blur();
29177
29191
 
29178
29192
  // When in mobile mode and editing is done (due to keyboard dismissal), close the menu
@@ -29181,6 +29195,13 @@
29181
29195
  isEditingInput.value = false;
29182
29196
  }
29183
29197
  }
29198
+ function onUserInput(_ref2) {
29199
+ let {
29200
+ value
29201
+ } = _ref2;
29202
+ if (value && !adapter.isValid(value)) return;
29203
+ model.value = !value ? emptyModelValue() : value;
29204
+ }
29184
29205
  useRender(() => {
29185
29206
  const confirmEditProps = VConfirmEdit.filterProps(props);
29186
29207
  const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']));
@@ -29219,14 +29240,14 @@
29219
29240
  "onSave": onSave,
29220
29241
  "onCancel": onCancel
29221
29242
  }), {
29222
- default: _ref2 => {
29243
+ default: _ref3 => {
29223
29244
  let {
29224
29245
  actions,
29225
29246
  model: proxyModel,
29226
29247
  save,
29227
29248
  cancel,
29228
29249
  isPristine
29229
- } = _ref2;
29250
+ } = _ref3;
29230
29251
  function onUpdateModel(value) {
29231
29252
  if (!props.hideActions) {
29232
29253
  proxyModel.value = value;
@@ -31641,7 +31662,7 @@
31641
31662
  };
31642
31663
  });
31643
31664
  }
31644
- const version$1 = "3.8.3-master.2025-04-30";
31665
+ const version$1 = "3.8.3-master.2025-05-02";
31645
31666
  createVuetify$1.version = version$1;
31646
31667
 
31647
31668
  // Vue's inject() can only be used in setup
@@ -31939,7 +31960,7 @@
31939
31960
 
31940
31961
  /* eslint-disable local-rules/sort-imports */
31941
31962
 
31942
- const version = "3.8.3-master.2025-04-30";
31963
+ const version = "3.8.3-master.2025-05-02";
31943
31964
 
31944
31965
  /* eslint-disable local-rules/sort-imports */
31945
31966