@vuetify/nightly 3.7.6-master.2024-12-26 → 3.7.6-master.2025-01-16

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 (61) hide show
  1. package/dist/json/attributes.json +1540 -1540
  2. package/dist/json/importMap-labs.json +18 -18
  3. package/dist/json/importMap.json +168 -168
  4. package/dist/json/web-types.json +2725 -2705
  5. package/dist/vuetify-labs.css +3281 -3277
  6. package/dist/vuetify-labs.d.ts +129 -104
  7. package/dist/vuetify-labs.esm.js +61 -27
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +61 -27
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +3686 -3682
  12. package/dist/vuetify.d.ts +65 -68
  13. package/dist/vuetify.esm.js +41 -22
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +41 -22
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +930 -924
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAutocomplete/VAutocomplete.mjs +7 -4
  21. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  22. package/lib/components/VColorPicker/VColorPickerPreview.mjs +2 -2
  23. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  24. package/lib/components/VCombobox/VCombobox.mjs +7 -4
  25. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  26. package/lib/components/VDialog/VDialog.css +5 -2
  27. package/lib/components/VDialog/VDialog.sass +6 -2
  28. package/lib/components/VField/VField.mjs +1 -1
  29. package/lib/components/VField/VField.mjs.map +1 -1
  30. package/lib/components/VInput/VInput.css +1 -1
  31. package/lib/components/VInput/VInput.sass +1 -1
  32. package/lib/components/VProgressLinear/VProgressLinear.mjs +1 -1
  33. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  34. package/lib/components/VSlideGroup/VSlideGroup.mjs +12 -2
  35. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  36. package/lib/components/VSparkline/VBarline.mjs +3 -2
  37. package/lib/components/VSparkline/VBarline.mjs.map +1 -1
  38. package/lib/components/VSparkline/VTrendline.mjs +2 -1
  39. package/lib/components/VSparkline/VTrendline.mjs.map +1 -1
  40. package/lib/components/VSparkline/index.d.mts +7 -10
  41. package/lib/components/VSparkline/util/line.mjs +1 -1
  42. package/lib/components/VSparkline/util/line.mjs.map +1 -1
  43. package/lib/components/VStepper/VStepperItem.mjs +1 -0
  44. package/lib/components/VStepper/VStepperItem.mjs.map +1 -1
  45. package/lib/components/VTextarea/VTextarea.css +1 -0
  46. package/lib/components/VTextarea/VTextarea.sass +1 -0
  47. package/lib/components/index.d.mts +7 -10
  48. package/lib/composables/filter.mjs +3 -3
  49. package/lib/composables/filter.mjs.map +1 -1
  50. package/lib/entry-bundler.mjs +1 -1
  51. package/lib/framework.mjs +1 -1
  52. package/lib/index.d.mts +58 -58
  53. package/lib/labs/VDateInput/VDateInput.mjs +19 -5
  54. package/lib/labs/VDateInput/VDateInput.mjs.map +1 -1
  55. package/lib/labs/VDateInput/index.d.mts +176 -97
  56. package/lib/labs/components.d.mts +227 -199
  57. package/lib/locale/az.mjs +28 -28
  58. package/lib/locale/az.mjs.map +1 -1
  59. package/lib/locale/nl.mjs +5 -5
  60. package/lib/locale/nl.mjs.map +1 -1
  61. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.7.6-master.2024-12-26
2
+ * Vuetify v3.7.6-master.2025-01-16
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -5040,7 +5040,7 @@
5040
5040
  "aria-hidden": props.active ? 'false' : 'true',
5041
5041
  "aria-valuemin": "0",
5042
5042
  "aria-valuemax": props.max,
5043
- "aria-valuenow": props.indeterminate ? undefined : normalizedValue.value,
5043
+ "aria-valuenow": props.indeterminate ? undefined : Math.min(parseFloat(progress.value), max.value),
5044
5044
  "onClick": props.clickable && handleClick
5045
5045
  }, {
5046
5046
  default: () => [props.stream && vue.createVNode("div", {
@@ -7619,6 +7619,14 @@
7619
7619
  toFocus('last');
7620
7620
  }
7621
7621
  }
7622
+ function getSiblingElement(el, location) {
7623
+ if (!el) return undefined;
7624
+ let sibling = el;
7625
+ do {
7626
+ sibling = sibling?.[location === 'next' ? 'nextElementSibling' : 'previousElementSibling'];
7627
+ } while (sibling?.hasAttribute('disabled'));
7628
+ return sibling;
7629
+ }
7622
7630
  function focus(location) {
7623
7631
  if (!contentRef.el) return;
7624
7632
  let el;
@@ -7626,15 +7634,17 @@
7626
7634
  const focusable = focusableChildren(contentRef.el);
7627
7635
  el = focusable[0];
7628
7636
  } else if (location === 'next') {
7629
- el = contentRef.el.querySelector(':focus')?.nextElementSibling;
7637
+ el = getSiblingElement(contentRef.el.querySelector(':focus'), location);
7630
7638
  if (!el) return focus('first');
7631
7639
  } else if (location === 'prev') {
7632
- el = contentRef.el.querySelector(':focus')?.previousElementSibling;
7640
+ el = getSiblingElement(contentRef.el.querySelector(':focus'), location);
7633
7641
  if (!el) return focus('last');
7634
7642
  } else if (location === 'first') {
7635
7643
  el = contentRef.el.firstElementChild;
7644
+ if (el?.hasAttribute('disabled')) el = getSiblingElement(el, 'next');
7636
7645
  } else if (location === 'last') {
7637
7646
  el = contentRef.el.lastElementChild;
7647
+ if (el?.hasAttribute('disabled')) el = getSiblingElement(el, 'prev');
7638
7648
  }
7639
7649
  if (el) {
7640
7650
  el.focus({
@@ -11582,7 +11592,7 @@
11582
11592
  useRender(() => {
11583
11593
  const isOutlined = props.variant === 'outlined';
11584
11594
  const hasPrepend = !!(slots['prepend-inner'] || props.prependInnerIcon);
11585
- const hasClear = !!(props.clearable || slots.clear);
11595
+ const hasClear = !!(props.clearable || slots.clear) && !props.disabled;
11586
11596
  const hasAppend = !!(slots['append-inner'] || props.appendInnerIcon || hasClear);
11587
11597
  const label = () => slots.label ? slots.label({
11588
11598
  ...slotProps.value,
@@ -12864,8 +12874,8 @@
12864
12874
  return array;
12865
12875
  }
12866
12876
  function useFilter(props, items, query, options) {
12867
- const filteredItems = vue.ref([]);
12868
- const filteredMatches = vue.ref(new Map());
12877
+ const filteredItems = vue.shallowRef([]);
12878
+ const filteredMatches = vue.shallowRef(new Map());
12869
12879
  const transformedItems = vue.computed(() => options?.transform ? vue.unref(items).map(item => [item, options.transform(item)]) : vue.unref(items));
12870
12880
  vue.watchEffect(() => {
12871
12881
  const _query = typeof query === 'function' ? query() : vue.unref(query);
@@ -13026,7 +13036,7 @@
13026
13036
  menu.value = !menu.value;
13027
13037
  }
13028
13038
  function onListKeydown(e) {
13029
- if (checkPrintable(e)) {
13039
+ if (e.key !== ' ' && checkPrintable(e)) {
13030
13040
  vTextFieldRef.value?.focus();
13031
13041
  }
13032
13042
  }
@@ -13034,7 +13044,7 @@
13034
13044
  if (form.isReadonly.value) return;
13035
13045
  const selectionStart = vTextFieldRef.value.selectionStart;
13036
13046
  const length = model.value.length;
13037
- if (selectionIndex.value > -1 || ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {
13047
+ if (['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {
13038
13048
  e.preventDefault();
13039
13049
  }
13040
13050
  if (['Enter', 'ArrowDown'].includes(e.key)) {
@@ -13057,12 +13067,14 @@
13057
13067
  if (['Backspace', 'Delete'].includes(e.key)) {
13058
13068
  if (!props.multiple && hasSelectionSlot.value && model.value.length > 0 && !search.value) return select(model.value[0], false);
13059
13069
  if (~selectionIndex.value) {
13070
+ e.preventDefault();
13060
13071
  const originalSelectionIndex = selectionIndex.value;
13061
13072
  select(model.value[selectionIndex.value], false);
13062
13073
  selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
13063
13074
  } else if (e.key === 'Backspace' && !search.value) {
13064
13075
  selectionIndex.value = length - 1;
13065
13076
  }
13077
+ return;
13066
13078
  }
13067
13079
  if (!props.multiple) return;
13068
13080
  if (e.key === 'ArrowLeft') {
@@ -13074,8 +13086,7 @@
13074
13086
  selectionIndex.value = -1;
13075
13087
  vTextFieldRef.value.setSelectionRange(search.value?.length, search.value?.length);
13076
13088
  }
13077
- }
13078
- if (e.key === 'ArrowRight') {
13089
+ } else if (e.key === 'ArrowRight') {
13079
13090
  if (selectionIndex.value < 0) return;
13080
13091
  const next = selectionIndex.value + 1;
13081
13092
  if (model.value[next]) {
@@ -13084,6 +13095,8 @@
13084
13095
  selectionIndex.value = -1;
13085
13096
  vTextFieldRef.value.setSelectionRange(0, 0);
13086
13097
  }
13098
+ } else if (~selectionIndex.value && checkPrintable(e)) {
13099
+ selectionIndex.value = -1;
13087
13100
  }
13088
13101
  }
13089
13102
  function onChange(e) {
@@ -16099,7 +16112,7 @@
16099
16112
  const result = await eyeDropper.open({
16100
16113
  signal: abortController.signal
16101
16114
  });
16102
- const colorHexValue = HexToHSV(result.sRGBHex);
16115
+ const colorHexValue = RGBtoHSV(parseColor(result.sRGBHex));
16103
16116
  emit('update:color', {
16104
16117
  ...(props.color ?? nullColor),
16105
16118
  ...colorHexValue
@@ -16910,7 +16923,7 @@
16910
16923
  menu.value = !menu.value;
16911
16924
  }
16912
16925
  function onListKeydown(e) {
16913
- if (checkPrintable(e)) {
16926
+ if (e.key !== ' ' && checkPrintable(e)) {
16914
16927
  vTextFieldRef.value?.focus();
16915
16928
  }
16916
16929
  }
@@ -16919,7 +16932,7 @@
16919
16932
  if (isComposingIgnoreKey(e) || form.isReadonly.value) return;
16920
16933
  const selectionStart = vTextFieldRef.value.selectionStart;
16921
16934
  const length = model.value.length;
16922
- if (selectionIndex.value > -1 || ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {
16935
+ if (['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {
16923
16936
  e.preventDefault();
16924
16937
  }
16925
16938
  if (['Enter', 'ArrowDown'].includes(e.key)) {
@@ -16949,12 +16962,14 @@
16949
16962
  if (['Backspace', 'Delete'].includes(e.key)) {
16950
16963
  if (!props.multiple && hasSelectionSlot.value && model.value.length > 0 && !search.value) return select(model.value[0], false);
16951
16964
  if (~selectionIndex.value) {
16965
+ e.preventDefault();
16952
16966
  const originalSelectionIndex = selectionIndex.value;
16953
16967
  select(model.value[selectionIndex.value], false);
16954
16968
  selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
16955
16969
  } else if (e.key === 'Backspace' && !search.value) {
16956
16970
  selectionIndex.value = length - 1;
16957
16971
  }
16972
+ return;
16958
16973
  }
16959
16974
  if (!props.multiple) return;
16960
16975
  if (e.key === 'ArrowLeft') {
@@ -16966,8 +16981,7 @@
16966
16981
  selectionIndex.value = -1;
16967
16982
  vTextFieldRef.value.setSelectionRange(search.value.length, search.value.length);
16968
16983
  }
16969
- }
16970
- if (e.key === 'ArrowRight') {
16984
+ } else if (e.key === 'ArrowRight') {
16971
16985
  if (selectionIndex.value < 0) return;
16972
16986
  const next = selectionIndex.value + 1;
16973
16987
  if (model.value[next]) {
@@ -16976,6 +16990,8 @@
16976
16990
  selectionIndex.value = -1;
16977
16991
  vTextFieldRef.value.setSelectionRange(0, 0);
16978
16992
  }
16993
+ } else if (~selectionIndex.value && checkPrintable(e)) {
16994
+ selectionIndex.value = -1;
16979
16995
  }
16980
16996
  }
16981
16997
  function onAfterEnter() {
@@ -25548,7 +25564,7 @@
25548
25564
  default: 8
25549
25565
  },
25550
25566
  showLabels: Boolean,
25551
- smooth: Boolean,
25567
+ smooth: [Boolean, String, Number],
25552
25568
  width: {
25553
25569
  type: [Number, String],
25554
25570
  default: 300
@@ -25629,6 +25645,7 @@
25629
25645
  });
25630
25646
  const bars = vue.computed(() => genBars(items.value, boundary.value));
25631
25647
  const offsetX = vue.computed(() => (Math.abs(bars.value[0].x - bars.value[1].x) - lineWidth.value) / 2);
25648
+ const smooth = vue.computed(() => typeof props.smooth === 'boolean' ? props.smooth ? 2 : 0 : Number(props.smooth));
25632
25649
  useRender(() => {
25633
25650
  const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse();
25634
25651
  return vue.createVNode("svg", {
@@ -25650,8 +25667,8 @@
25650
25667
  "y": item.y,
25651
25668
  "width": lineWidth.value,
25652
25669
  "height": item.height,
25653
- "rx": typeof props.smooth === 'number' ? props.smooth : props.smooth ? 2 : 0,
25654
- "ry": typeof props.smooth === 'number' ? props.smooth : props.smooth ? 2 : 0
25670
+ "rx": smooth.value,
25671
+ "ry": smooth.value
25655
25672
  }, [props.autoDraw && vue.createVNode(vue.Fragment, null, [vue.createVNode("animate", {
25656
25673
  "attributeName": "y",
25657
25674
  "from": item.y + item.height,
@@ -25853,7 +25870,8 @@
25853
25870
  immediate: true
25854
25871
  });
25855
25872
  function genPath$1(fill) {
25856
- return genPath(genPoints(items.value, boundary.value), props.smooth ? 8 : Number(props.smooth), fill, parseInt(props.height, 10));
25873
+ const smoothValue = typeof props.smooth === 'boolean' ? props.smooth ? 8 : 0 : Number(props.smooth);
25874
+ return genPath(genPoints(items.value, boundary.value), smoothValue, fill, parseInt(props.height, 10));
25857
25875
  }
25858
25876
  useRender(() => {
25859
25877
  const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse();
@@ -26177,6 +26195,7 @@
26177
26195
  'v-stepper-item--error': hasError.value
26178
26196
  }, group?.selectedClass.value],
26179
26197
  "disabled": !props.editable,
26198
+ "type": "button",
26180
26199
  "onClick": onClick
26181
26200
  }, [isClickable.value && genOverlays(true, 'v-stepper-item'), vue.createVNode(VAvatar, {
26182
26201
  "key": "stepper-avatar",
@@ -28066,8 +28085,14 @@
28066
28085
 
28067
28086
  // Types
28068
28087
 
28088
+ // Types
28089
+
28069
28090
  const makeVDateInputProps = propsFactory({
28070
28091
  hideActions: Boolean,
28092
+ location: {
28093
+ type: String,
28094
+ default: 'bottom start'
28095
+ },
28071
28096
  ...makeFocusProps(),
28072
28097
  ...makeVConfirmEditProps(),
28073
28098
  ...makeVTextFieldProps({
@@ -28077,7 +28102,7 @@
28077
28102
  ...omit(makeVDatePickerProps({
28078
28103
  weeksInMonth: 'dynamic',
28079
28104
  hideHeader: true
28080
- }), ['active'])
28105
+ }), ['active', 'location'])
28081
28106
  }, 'VDateInput');
28082
28107
  const VDateInput = genericComponent()({
28083
28108
  name: 'VDateInput',
@@ -28133,7 +28158,7 @@
28133
28158
  }
28134
28159
  useRender(() => {
28135
28160
  const confirmEditProps = VConfirmEdit.filterProps(props);
28136
- const datePickerProps = VDatePicker.filterProps(omit(props, ['active']));
28161
+ const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location']));
28137
28162
  const textFieldProps = VTextField.filterProps(props);
28138
28163
  return vue.createVNode(VTextField, vue.mergeProps(textFieldProps, {
28139
28164
  "class": props.class,
@@ -28151,18 +28176,23 @@
28151
28176
  "onUpdate:modelValue": $event => menu.value = $event,
28152
28177
  "activator": "parent",
28153
28178
  "min-width": "0",
28179
+ "location": props.location,
28154
28180
  "closeOnContentClick": false,
28155
28181
  "openOnClick": false
28156
28182
  }, {
28157
28183
  default: () => [vue.createVNode(VConfirmEdit, vue.mergeProps(confirmEditProps, {
28158
28184
  "modelValue": model.value,
28159
28185
  "onUpdate:modelValue": $event => model.value = $event,
28160
- "onSave": onSave
28186
+ "onSave": onSave,
28187
+ "onCancel": () => menu.value = false
28161
28188
  }), {
28162
28189
  default: _ref2 => {
28163
28190
  let {
28164
28191
  actions,
28165
- model: proxyModel
28192
+ model: proxyModel,
28193
+ save,
28194
+ cancel,
28195
+ isPristine
28166
28196
  } = _ref2;
28167
28197
  return vue.createVNode(VDatePicker, vue.mergeProps(datePickerProps, {
28168
28198
  "modelValue": props.hideActions ? model.value : proxyModel.value,
@@ -28176,7 +28206,11 @@
28176
28206
  },
28177
28207
  "onMousedown": e => e.preventDefault()
28178
28208
  }), {
28179
- actions: !props.hideActions ? actions : undefined
28209
+ actions: !props.hideActions ? () => slots.actions?.({
28210
+ save,
28211
+ cancel,
28212
+ isPristine
28213
+ }) ?? actions() : undefined
28180
28214
  });
28181
28215
  }
28182
28216
  })]
@@ -30750,7 +30784,7 @@
30750
30784
  goTo
30751
30785
  };
30752
30786
  }
30753
- const version$1 = "3.7.6-master.2024-12-26";
30787
+ const version$1 = "3.7.6-master.2025-01-16";
30754
30788
  createVuetify$1.version = version$1;
30755
30789
 
30756
30790
  // Vue's inject() can only be used in setup
@@ -31003,7 +31037,7 @@
31003
31037
 
31004
31038
  /* eslint-disable local-rules/sort-imports */
31005
31039
 
31006
- const version = "3.7.6-master.2024-12-26";
31040
+ const version = "3.7.6-master.2025-01-16";
31007
31041
 
31008
31042
  /* eslint-disable local-rules/sort-imports */
31009
31043