vuetify 3.1.11 → 3.1.12

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 (58) hide show
  1. package/dist/json/attributes.json +8 -12
  2. package/dist/json/importMap.json +84 -84
  3. package/dist/json/tags.json +0 -1
  4. package/dist/json/web-types.json +19 -25
  5. package/dist/vuetify-labs.css +129 -135
  6. package/dist/vuetify-labs.d.ts +73 -66
  7. package/dist/vuetify-labs.esm.js +65 -36
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +64 -35
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +53 -59
  12. package/dist/vuetify.d.ts +66 -75
  13. package/dist/vuetify.esm.js +44 -30
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +44 -30
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +326 -325
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VBadge/VBadge.css +1 -0
  21. package/lib/components/VBadge/VBadge.sass +1 -0
  22. package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
  23. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  24. package/lib/components/VCheckbox/index.d.ts +41 -50
  25. package/lib/components/VCombobox/VCombobox.mjs +9 -1
  26. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  27. package/lib/components/VDialog/VDialog.css +11 -18
  28. package/lib/components/VDialog/VDialog.mjs +2 -2
  29. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  30. package/lib/components/VDialog/VDialog.sass +8 -15
  31. package/lib/components/VField/VField.mjs +5 -1
  32. package/lib/components/VField/VField.mjs.map +1 -1
  33. package/lib/components/VGrid/VCol.mjs +2 -2
  34. package/lib/components/VGrid/VCol.mjs.map +1 -1
  35. package/lib/components/VGrid/VRow.mjs +2 -2
  36. package/lib/components/VGrid/VRow.mjs.map +1 -1
  37. package/lib/components/VOverlay/VOverlay.css +1 -1
  38. package/lib/components/VOverlay/VOverlay.sass +1 -1
  39. package/lib/components/VTextField/VTextField.mjs +11 -6
  40. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  41. package/lib/components/index.d.ts +41 -50
  42. package/lib/composables/forwardRefs.mjs +12 -15
  43. package/lib/composables/forwardRefs.mjs.map +1 -1
  44. package/lib/entry-bundler.mjs +1 -1
  45. package/lib/framework.mjs +1 -1
  46. package/lib/index.d.ts +25 -25
  47. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  48. package/lib/labs/VDataTable/VDataTableRow.mjs +5 -4
  49. package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
  50. package/lib/labs/VDataTable/VDataTableServer.mjs +3 -1
  51. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  52. package/lib/labs/VDataTable/composables/items.mjs +14 -1
  53. package/lib/labs/VDataTable/composables/items.mjs.map +1 -1
  54. package/lib/labs/VDataTable/index.d.ts +32 -16
  55. package/lib/labs/components.d.ts +32 -16
  56. package/lib/util/globals.mjs +1 -1
  57. package/lib/util/globals.mjs.map +1 -1
  58. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.1.11
2
+ * Vuetify v3.1.12
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -13,7 +13,7 @@
13
13
  const IN_BROWSER = typeof window !== 'undefined';
14
14
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
15
15
  const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0);
16
- const SUPPORTS_FOCUS_VISIBLE = IN_BROWSER && typeof CSS !== 'undefined' && CSS.supports('selector(:focus-visible)');
16
+ const SUPPORTS_FOCUS_VISIBLE = IN_BROWSER && typeof CSS !== 'undefined' && typeof CSS.supports !== 'undefined' && CSS.supports('selector(:focus-visible)');
17
17
 
18
18
  // Utilities
19
19
  function useResizeObserver(callback) {
@@ -5513,7 +5513,11 @@
5513
5513
  "key": "clear"
5514
5514
  }, {
5515
5515
  default: () => [vue.withDirectives(vue.createVNode("div", {
5516
- "class": "v-field__clearable"
5516
+ "class": "v-field__clearable",
5517
+ "onMousedown": e => {
5518
+ e.preventDefault();
5519
+ e.stopPropagation();
5520
+ }
5517
5521
  }, [slots.clear ? slots.clear() : vue.createVNode(InputIcon, {
5518
5522
  "name": "clear"
5519
5523
  }, null)]), [[vue.vShow, props.dirty]])]
@@ -6019,6 +6023,15 @@
6019
6023
 
6020
6024
  /** Omit properties starting with P */
6021
6025
 
6026
+ function getDescriptor(obj, key) {
6027
+ let currentObj = obj;
6028
+ while (currentObj) {
6029
+ const descriptor = Reflect.getOwnPropertyDescriptor(currentObj, key);
6030
+ if (descriptor) return descriptor;
6031
+ currentObj = Object.getPrototypeOf(currentObj);
6032
+ }
6033
+ return undefined;
6034
+ }
6022
6035
  function forwardRefs(target) {
6023
6036
  for (var _len = arguments.length, refs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
6024
6037
  refs[_key - 1] = arguments[_key];
@@ -6046,30 +6059,18 @@
6046
6059
  // Check each ref's own properties
6047
6060
  for (const ref of refs) {
6048
6061
  if (!ref.value) continue;
6049
- const descriptor = Reflect.getOwnPropertyDescriptor(ref.value, key);
6062
+ const descriptor = getDescriptor(ref.value, key) ?? ('_' in ref.value ? getDescriptor(ref.value._?.setupState, key) : undefined);
6050
6063
  if (descriptor) return descriptor;
6051
- if ('_' in ref.value && 'setupState' in ref.value._) {
6052
- const descriptor = Reflect.getOwnPropertyDescriptor(ref.value._.setupState, key);
6053
- if (descriptor) return descriptor;
6054
- }
6055
6064
  }
6065
+
6056
6066
  // Recursive search up each ref's prototype
6057
- for (const ref of refs) {
6058
- let obj = ref.value && Object.getPrototypeOf(ref.value);
6059
- while (obj) {
6060
- const descriptor = Reflect.getOwnPropertyDescriptor(obj, key);
6061
- if (descriptor) return descriptor;
6062
- obj = Object.getPrototypeOf(obj);
6063
- }
6064
- }
6065
- // Call forwarded refs' proxies
6066
6067
  for (const ref of refs) {
6067
6068
  const childRefs = ref.value && ref.value[Refs];
6068
6069
  if (!childRefs) continue;
6069
6070
  const queue = childRefs.slice();
6070
6071
  while (queue.length) {
6071
6072
  const ref = queue.shift();
6072
- const descriptor = Reflect.getOwnPropertyDescriptor(ref.value, key);
6073
+ const descriptor = getDescriptor(ref.value, key);
6073
6074
  if (descriptor) return descriptor;
6074
6075
  const childRefs = ref.value && ref.value[Refs];
6075
6076
  if (childRefs) queue.push(...childRefs);
@@ -6171,12 +6172,14 @@
6171
6172
  }
6172
6173
  function onInput(e) {
6173
6174
  const el = e.target;
6174
- const caretPosition = [el.selectionStart, el.selectionEnd];
6175
6175
  model.value = el.value;
6176
- vue.nextTick(() => {
6177
- el.selectionStart = caretPosition[0];
6178
- el.selectionEnd = caretPosition[1];
6179
- });
6176
+ if (['text', 'search', 'password', 'tel', 'url'].includes(props.type)) {
6177
+ const caretPosition = [el.selectionStart, el.selectionEnd];
6178
+ vue.nextTick(() => {
6179
+ el.selectionStart = caretPosition[0];
6180
+ el.selectionEnd = caretPosition[1];
6181
+ });
6182
+ }
6180
6183
  }
6181
6184
  useRender(() => {
6182
6185
  const hasCounter = !!(slots.counter || props.counter || props.counterValue);
@@ -6235,6 +6238,9 @@
6235
6238
  ...slotProps
6236
6239
  }
6237
6240
  } = _ref3;
6241
+ const placeholder = vue.computed(() => {
6242
+ return (props.persistentPlaceholder || isFocused.value) && !isDirty.value ? props.placeholder : '';
6243
+ });
6238
6244
  const inputNode = vue.withDirectives(vue.createVNode("input", vue.mergeProps({
6239
6245
  "ref": inputRef,
6240
6246
  "value": model.value,
@@ -6243,7 +6249,7 @@
6243
6249
  "readonly": isReadonly.value,
6244
6250
  "disabled": isDisabled.value,
6245
6251
  "name": props.name,
6246
- "placeholder": props.placeholder,
6252
+ "placeholder": placeholder.value,
6247
6253
  "size": 1,
6248
6254
  "type": props.type,
6249
6255
  "onFocus": onFocus,
@@ -6590,7 +6596,7 @@
6590
6596
  inheritAttrs: false,
6591
6597
  props: {
6592
6598
  ...makeVInputProps(),
6593
- ...makeVCheckboxBtnProps()
6599
+ ...omit(makeVCheckboxBtnProps(), ['inline'])
6594
6600
  },
6595
6601
  emits: {
6596
6602
  'update:focused': focused => true
@@ -13520,6 +13526,7 @@
13520
13526
  }
13521
13527
  });
13522
13528
  const selectionIndex = vue.ref(-1);
13529
+ let cleared = false;
13523
13530
  const color = vue.computed(() => vTextFieldRef.value?.color);
13524
13531
  const {
13525
13532
  items,
@@ -13556,11 +13563,17 @@
13556
13563
  }
13557
13564
  }
13558
13565
  if (!val) selectionIndex.value = -1;
13559
- if (isFocused.value) menu.value = true;
13560
13566
  isPristine.value = !val;
13561
13567
  }
13562
13568
  });
13563
13569
  vue.watch(_search, value => {
13570
+ if (cleared) {
13571
+ // wait for clear to finish, VTextField sets _search to null
13572
+ // then search computed triggers and updates _search to ''
13573
+ vue.nextTick(() => cleared = false);
13574
+ } else if (isFocused.value && !menu.value) {
13575
+ menu.value = true;
13576
+ }
13564
13577
  emit('update:search', value);
13565
13578
  });
13566
13579
  vue.watch(model, value => {
@@ -13587,6 +13600,7 @@
13587
13600
  const selection = vue.computed(() => selections.value[selectionIndex.value]);
13588
13601
  const listRef = vue.ref();
13589
13602
  function onClear(e) {
13603
+ cleared = true;
13590
13604
  if (props.openOnClear) {
13591
13605
  menu.value = true;
13592
13606
  }
@@ -13919,9 +13933,9 @@
13919
13933
  }, overlayProps, {
13920
13934
  "modelValue": isActive.value,
13921
13935
  "onUpdate:modelValue": $event => isActive.value = $event,
13922
- "aria-role": "dialog",
13923
13936
  "aria-modal": "true",
13924
- "activatorProps": activatorProps.value
13937
+ "activatorProps": activatorProps.value,
13938
+ "role": "dialog"
13925
13939
  }, scopeId), {
13926
13940
  activator: slots.activator,
13927
13941
  default: function () {
@@ -18796,7 +18810,7 @@
18796
18810
  if (column.key === 'data-table-select') {
18797
18811
  return slots['item.data-table-select']?.(slotProps) ?? vue.createVNode(VCheckboxBtn, {
18798
18812
  "modelValue": isSelected([item]),
18799
- "onClick": () => toggleSelect(item)
18813
+ "onClick": vue.withModifiers(() => toggleSelect(item), ['stop'])
18800
18814
  }, null);
18801
18815
  }
18802
18816
  if (column.key === 'data-table-expand') {
@@ -18804,10 +18818,10 @@
18804
18818
  "icon": isExpanded(item) ? '$collapse' : '$expand',
18805
18819
  "size": "small",
18806
18820
  "variant": "text",
18807
- "onClick": () => toggleExpand(item)
18821
+ "onClick": vue.withModifiers(() => toggleExpand(item), ['stop'])
18808
18822
  }, null);
18809
18823
  }
18810
- return item.columns[column.key];
18824
+ return getPropertyFromItem(item.columns, column.key);
18811
18825
  }
18812
18826
  }))]));
18813
18827
  }
@@ -19136,6 +19150,19 @@
19136
19150
  itemValue: 'id'
19137
19151
  })
19138
19152
  }, 'v-data-table-item');
19153
+ function add(obj, key, value) {
19154
+ const path = key.split('.');
19155
+ while (path.length > 1) {
19156
+ const part = path.shift();
19157
+ if (obj[part] == null) {
19158
+ obj[part] = {};
19159
+ }
19160
+ if (typeof obj[part] === 'object') {
19161
+ obj = obj[part];
19162
+ }
19163
+ }
19164
+ obj[path[0]] = value;
19165
+ }
19139
19166
  function useDataTableItems(props, columns) {
19140
19167
  const {
19141
19168
  items
@@ -19145,7 +19172,7 @@
19145
19172
  ...item,
19146
19173
  type: 'item',
19147
19174
  columns: columns.value.reduce((obj, column) => {
19148
- obj[column.key] = getPropertyFromItem(item.raw, column.value ?? column.key);
19175
+ add(obj, column.key, getPropertyFromItem(item.raw, column.value ?? column.key));
19149
19176
  return obj;
19150
19177
  }, {})
19151
19178
  };
@@ -19683,7 +19710,9 @@
19683
19710
  "height": props.height
19684
19711
  }, {
19685
19712
  top: slots.top,
19686
- default: slots.default ?? (() => vue.createVNode(vue.Fragment, null, [vue.createVNode("thead", {
19713
+ default: slots.default ?? (() => vue.createVNode(vue.Fragment, null, [slots.colgroup?.({
19714
+ columns
19715
+ }), vue.createVNode("thead", {
19687
19716
  "class": "v-data-table__thead",
19688
19717
  "role": "rowgroup"
19689
19718
  }, [slots.headers ? slots.headers() : vue.createVNode(VDataTableHeaders, {
@@ -20226,7 +20255,7 @@
20226
20255
  locale
20227
20256
  };
20228
20257
  }
20229
- const version$1 = "3.1.11";
20258
+ const version$1 = "3.1.12";
20230
20259
  createVuetify$1.version = version$1;
20231
20260
 
20232
20261
  // Vue's inject() can only be used in setup
@@ -20238,7 +20267,7 @@
20238
20267
  }
20239
20268
  }
20240
20269
 
20241
- const version = "3.1.11";
20270
+ const version = "3.1.12";
20242
20271
 
20243
20272
  const createVuetify = function () {
20244
20273
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};