@vuetify/nightly 3.2.0-dev-20230407.0 → 3.2.0-dev-20230415.0

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 (93) hide show
  1. package/CHANGELOG.md +2 -2
  2. package/dist/json/attributes.json +24 -8
  3. package/dist/json/importMap.json +14 -14
  4. package/dist/json/tags.json +5 -1
  5. package/dist/json/web-types.json +83 -47
  6. package/dist/vuetify-labs.css +2299 -2280
  7. package/dist/vuetify-labs.d.ts +548 -498
  8. package/dist/vuetify-labs.esm.js +92 -50
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +92 -50
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +23 -4
  13. package/dist/vuetify.d.ts +430 -406
  14. package/dist/vuetify.esm.js +74 -33
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +74 -33
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +280 -270
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAutocomplete/VAutocomplete.mjs +5 -2
  22. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  23. package/lib/components/VAutocomplete/index.d.ts +38 -32
  24. package/lib/components/VCheckbox/index.d.ts +14 -14
  25. package/lib/components/VChip/VChip.mjs +2 -2
  26. package/lib/components/VChip/VChip.mjs.map +1 -1
  27. package/lib/components/VChip/index.d.ts +14 -14
  28. package/lib/components/VCombobox/VCombobox.mjs +6 -3
  29. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  30. package/lib/components/VCombobox/index.d.ts +38 -32
  31. package/lib/components/VField/VField.mjs +3 -3
  32. package/lib/components/VField/VField.mjs.map +1 -1
  33. package/lib/components/VField/index.d.ts +20 -20
  34. package/lib/components/VFileInput/VFileInput.mjs +0 -1
  35. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  36. package/lib/components/VFileInput/index.d.ts +50 -56
  37. package/lib/components/VImg/VImg.mjs +3 -3
  38. package/lib/components/VImg/VImg.mjs.map +1 -1
  39. package/lib/components/VImg/index.d.ts +19 -19
  40. package/lib/components/VInput/VInput.mjs +2 -2
  41. package/lib/components/VInput/VInput.mjs.map +1 -1
  42. package/lib/components/VInput/index.d.ts +14 -14
  43. package/lib/components/VList/VList.mjs +2 -1
  44. package/lib/components/VList/VList.mjs.map +1 -1
  45. package/lib/components/VList/VListItem.css +12 -0
  46. package/lib/components/VList/VListItem.mjs +2 -2
  47. package/lib/components/VList/VListItem.mjs.map +1 -1
  48. package/lib/components/VList/VListItem.sass +5 -0
  49. package/lib/components/VList/index.d.ts +14 -14
  50. package/lib/components/VOverlay/useActivator.mjs +1 -0
  51. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  52. package/lib/components/VProgressCircular/VProgressCircular.css +3 -1
  53. package/lib/components/VProgressCircular/VProgressCircular.sass +3 -1
  54. package/lib/components/VProgressCircular/_variables.scss +1 -0
  55. package/lib/components/VProgressLinear/VProgressLinear.css +5 -2
  56. package/lib/components/VProgressLinear/VProgressLinear.sass +3 -0
  57. package/lib/components/VProgressLinear/_variables.scss +1 -1
  58. package/lib/components/VRadioGroup/index.d.ts +14 -14
  59. package/lib/components/VRangeSlider/index.d.ts +14 -14
  60. package/lib/components/VSelect/VSelect.mjs +31 -2
  61. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  62. package/lib/components/VSelect/index.d.ts +38 -32
  63. package/lib/components/VSlider/index.d.ts +14 -14
  64. package/lib/components/VSwitch/index.d.ts +14 -14
  65. package/lib/components/VTextField/VTextField.mjs +2 -2
  66. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  67. package/lib/components/VTextField/index.d.ts +83 -77
  68. package/lib/components/VTextarea/VTextarea.mjs +8 -5
  69. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  70. package/lib/components/VTextarea/index.d.ts +56 -50
  71. package/lib/components/VToolbar/VToolbar.css +2 -0
  72. package/lib/components/VToolbar/VToolbar.sass +2 -0
  73. package/lib/components/index.d.ts +426 -402
  74. package/lib/composables/proxiedModel.mjs +2 -1
  75. package/lib/composables/proxiedModel.mjs.map +1 -1
  76. package/lib/composables/theme.mjs +1 -1
  77. package/lib/composables/theme.mjs.map +1 -1
  78. package/lib/entry-bundler.mjs +1 -1
  79. package/lib/framework.mjs +1 -1
  80. package/lib/index.d.ts +4 -4
  81. package/lib/labs/VDataTable/VDataTable.mjs +4 -4
  82. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  83. package/lib/labs/VDataTable/VDataTableRows.mjs +5 -7
  84. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  85. package/lib/labs/VDataTable/VDataTableServer.mjs +4 -3
  86. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  87. package/lib/labs/VDataTable/VDataTableVirtual.mjs +5 -3
  88. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  89. package/lib/labs/VDataTable/index.d.ts +122 -96
  90. package/lib/labs/components.d.ts +122 -96
  91. package/lib/util/helpers.mjs +1 -1
  92. package/lib/util/helpers.mjs.map +1 -1
  93. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.2.0-dev-20230407.0
2
+ * Vuetify v3.2.0-dev-20230415.0
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -339,7 +339,7 @@ function includes(arr, val) {
339
339
  }
340
340
  const onRE = /^on[^a-z]/;
341
341
  const isOn = key => onRE.test(key);
342
- const EventProp = [Function, Array];
342
+ const EventProp = () => [Function, Array];
343
343
  function hasEvent(props, name) {
344
344
  name = 'on' + capitalize(name);
345
345
  return !!(props[name] || props[`${name}Once`] || props[`${name}Capture`] || props[`${name}OnceCapture`] || props[`${name}CaptureOnce`]);
@@ -1699,7 +1699,7 @@ function createTheme(options) {
1699
1699
  if (/^on-[a-z]/.test(key)) {
1700
1700
  createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`]);
1701
1701
  } else {
1702
- createCssClass(bgLines, `.bg-${key}`, [`--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`, `background: rgb(var(--v-theme-${key})) !important`, `color: rgb(var(--v-theme-on-${key})) !important`]);
1702
+ createCssClass(bgLines, `.bg-${key}`, [`--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`, `background-color: rgb(var(--v-theme-${key})) !important`, `color: rgb(var(--v-theme-on-${key})) !important`]);
1703
1703
  createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`]);
1704
1704
  createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`]);
1705
1705
  }
@@ -1837,7 +1837,8 @@ function useProxiedModel(props, prop, defaultValue) {
1837
1837
  });
1838
1838
  const model = computed({
1839
1839
  get() {
1840
- return transformIn(isControlled.value ? props[prop] : internal.value);
1840
+ const externalValue = props[prop];
1841
+ return transformIn(isControlled.value ? externalValue : internal.value);
1841
1842
  },
1842
1843
  set(internalValue) {
1843
1844
  const newValue = transformOut(internalValue);
@@ -2711,9 +2712,9 @@ const VImg = genericComponent()({
2711
2712
  ...makeTransitionProps()
2712
2713
  },
2713
2714
  emits: {
2714
- loadstart: event => true,
2715
- load: event => true,
2716
- error: event => true
2715
+ loadstart: value => true,
2716
+ load: value => true,
2717
+ error: value => true
2717
2718
  },
2718
2719
  setup(props, _ref) {
2719
2720
  let {
@@ -5338,9 +5339,9 @@ const makeVFieldProps = propsFactory({
5338
5339
  default: 'filled',
5339
5340
  validator: v => allowedVariants$1.includes(v)
5340
5341
  },
5341
- 'onClick:clear': EventProp,
5342
- 'onClick:appendInner': EventProp,
5343
- 'onClick:prependInner': EventProp,
5342
+ 'onClick:clear': EventProp(),
5343
+ 'onClick:appendInner': EventProp(),
5344
+ 'onClick:prependInner': EventProp(),
5344
5345
  ...makeThemeProps(),
5345
5346
  ...makeLoaderProps()
5346
5347
  }, 'v-field');
@@ -5886,8 +5887,8 @@ const makeVInputProps = propsFactory({
5886
5887
  default: 'horizontal',
5887
5888
  validator: v => ['horizontal', 'vertical'].includes(v)
5888
5889
  },
5889
- 'onClick:prepend': EventProp,
5890
- 'onClick:append': EventProp,
5890
+ 'onClick:prepend': EventProp(),
5891
+ 'onClick:append': EventProp(),
5891
5892
  ...makeDensityProps(),
5892
5893
  ...makeValidationProps()
5893
5894
  }, 'v-input');
@@ -6118,6 +6119,7 @@ const makeVTextFieldProps = propsFactory({
6118
6119
  type: String,
6119
6120
  default: 'text'
6120
6121
  },
6122
+ modelModifiers: Object,
6121
6123
  ...makeVInputProps(),
6122
6124
  ...makeVFieldProps()
6123
6125
  }, 'v-text-field');
@@ -6192,7 +6194,7 @@ const VTextField = genericComponent()({
6192
6194
  function onInput(e) {
6193
6195
  const el = e.target;
6194
6196
  model.value = el.value;
6195
- if (['text', 'search', 'password', 'tel', 'url'].includes(props.type)) {
6197
+ if (props.modelModifiers?.trim && ['text', 'search', 'password', 'tel', 'url'].includes(props.type)) {
6196
6198
  const caretPosition = [el.selectionStart, el.selectionEnd];
6197
6199
  nextTick(() => {
6198
6200
  el.selectionStart = caretPosition[0];
@@ -6829,8 +6831,8 @@ const VChip = genericComponent()({
6829
6831
  type: Boolean,
6830
6832
  default: true
6831
6833
  },
6832
- onClick: EventProp,
6833
- onClickOnce: EventProp,
6834
+ onClick: EventProp(),
6835
+ onClickOnce: EventProp(),
6834
6836
  ...makeBorderProps(),
6835
6837
  ...makeDensityProps(),
6836
6838
  ...makeElevationProps(),
@@ -7674,8 +7676,8 @@ const VListItem = genericComponent()({
7674
7676
  subtitle: [String, Number, Boolean],
7675
7677
  title: [String, Number, Boolean],
7676
7678
  value: null,
7677
- onClick: EventProp,
7678
- onClickOnce: EventProp,
7679
+ onClick: EventProp(),
7680
+ onClickOnce: EventProp(),
7679
7681
  ...makeBorderProps(),
7680
7682
  ...makeDensityProps(),
7681
7683
  ...makeDimensionProps(),
@@ -8217,7 +8219,8 @@ const VList = genericComponent()({
8217
8219
  }
8218
8220
  function focus(location) {
8219
8221
  if (!contentRef.value) return;
8220
- const focusable = [...contentRef.value.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')].filter(el => !el.hasAttribute('disabled'));
8222
+ const targets = ['button', '[href]', 'input', 'select', 'textarea', '[tabindex]'].map(s => `${s}:not([tabindex="-1"])`).join(', ');
8223
+ const focusable = [...contentRef.value.querySelectorAll(targets)].filter(el => !el.hasAttribute('disabled'));
8221
8224
  const idx = focusable.indexOf(document.activeElement);
8222
8225
  if (!location) {
8223
8226
  if (!contentRef.value.contains(document.activeElement)) {
@@ -8398,6 +8401,7 @@ function useActivator(props, _ref) {
8398
8401
  isActive.value = !isActive.value;
8399
8402
  },
8400
8403
  mouseenter: e => {
8404
+ if (e.sourceCapabilities?.firesTouchEvents) return;
8401
8405
  isHovered = true;
8402
8406
  activatorEl.value = e.currentTarget || e.target;
8403
8407
  runOpenDelay();
@@ -9924,6 +9928,9 @@ const VSelect = genericComponent()({
9924
9928
  });
9925
9929
  });
9926
9930
  const selected = computed(() => selections.value.map(selection => selection.props.value));
9931
+ const isFocused = ref(false);
9932
+ let keyboardLookupPrefix = '';
9933
+ let keyboardLookupLastTime;
9927
9934
  const displayItems = computed(() => {
9928
9935
  if (props.hideSelected) {
9929
9936
  return items.value.filter(item => !selections.value.some(s => s === item));
@@ -9960,6 +9967,26 @@ const VSelect = genericComponent()({
9960
9967
  } else if (e.key === 'End') {
9961
9968
  listRef.value?.focus('last');
9962
9969
  }
9970
+
9971
+ // html select hotkeys
9972
+ const KEYBOARD_LOOKUP_THRESHOLD = 1000; // milliseconds
9973
+
9974
+ function checkPrintable(e) {
9975
+ const isPrintableChar = e.key.length === 1;
9976
+ const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
9977
+ return isPrintableChar && noModifier;
9978
+ }
9979
+ if (props.multiple || !checkPrintable(e)) return;
9980
+ const now = performance.now();
9981
+ if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {
9982
+ keyboardLookupPrefix = '';
9983
+ }
9984
+ keyboardLookupPrefix += e.key.toLowerCase();
9985
+ keyboardLookupLastTime = now;
9986
+ const item = items.value.find(item => item.title.toLowerCase().startsWith(keyboardLookupPrefix));
9987
+ if (item !== undefined) {
9988
+ model.value = [item];
9989
+ }
9963
9990
  }
9964
9991
  function select(item) {
9965
9992
  if (props.multiple) {
@@ -9989,7 +10016,9 @@ const VSelect = genericComponent()({
9989
10016
  useRender(() => {
9990
10017
  const hasChips = !!(props.chips || slots.chip);
9991
10018
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
10019
+ const isDirty = model.value.length > 0;
9992
10020
  const [textFieldProps] = VTextField.filterProps(props);
10021
+ const placeholder = isDirty || !isFocused.value && props.label && !props.persistentPlaceholder ? undefined : props.placeholder;
9993
10022
  return createVNode(VTextField, mergeProps({
9994
10023
  "ref": vTextFieldRef
9995
10024
  }, textFieldProps, {
@@ -9997,8 +10026,10 @@ const VSelect = genericComponent()({
9997
10026
  "onUpdate:modelValue": v => {
9998
10027
  if (v == null) model.value = [];
9999
10028
  },
10029
+ "focused": isFocused.value,
10030
+ "onUpdate:focused": $event => isFocused.value = $event,
10000
10031
  "validationValue": model.externalValue,
10001
- "dirty": model.value.length > 0,
10032
+ "dirty": isDirty,
10002
10033
  "class": ['v-select', {
10003
10034
  'v-select--active-menu': menu.value,
10004
10035
  'v-select--chips': !!props.chips,
@@ -10007,6 +10038,7 @@ const VSelect = genericComponent()({
10007
10038
  }],
10008
10039
  "appendInnerIcon": props.menuIcon,
10009
10040
  "readonly": true,
10041
+ "placeholder": placeholder,
10010
10042
  "onClick:clear": onClear,
10011
10043
  "onMousedown:control": onMousedownControl,
10012
10044
  "onBlur": onBlur,
@@ -10055,7 +10087,8 @@ const VSelect = genericComponent()({
10055
10087
  } = _ref2;
10056
10088
  return props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10057
10089
  "modelValue": isSelected,
10058
- "ripple": false
10090
+ "ripple": false,
10091
+ "tabindex": "-1"
10059
10092
  }, null) : undefined;
10060
10093
  }
10061
10094
  });
@@ -10382,6 +10415,7 @@ const VAutocomplete = genericComponent()({
10382
10415
  useRender(() => {
10383
10416
  const hasChips = !!(props.chips || slots.chip);
10384
10417
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
10418
+ const isDirty = model.value.length > 0;
10385
10419
  const [textFieldProps] = VTextField.filterProps(props);
10386
10420
  return createVNode(VTextField, mergeProps({
10387
10421
  "ref": vTextFieldRef
@@ -10391,7 +10425,7 @@ const VAutocomplete = genericComponent()({
10391
10425
  if (v == null) model.value = [];
10392
10426
  },
10393
10427
  "validationValue": model.externalValue,
10394
- "dirty": model.value.length > 0,
10428
+ "dirty": isDirty,
10395
10429
  "onInput": onInput,
10396
10430
  "class": ['v-autocomplete', {
10397
10431
  'v-autocomplete--active-menu': menu.value,
@@ -10401,6 +10435,7 @@ const VAutocomplete = genericComponent()({
10401
10435
  }],
10402
10436
  "appendInnerIcon": props.menuIcon,
10403
10437
  "readonly": props.readonly,
10438
+ "placeholder": isDirty ? undefined : props.placeholder,
10404
10439
  "onClick:clear": onClear,
10405
10440
  "onMousedown:control": onMousedownControl,
10406
10441
  "onFocus": () => isFocused.value = true,
@@ -10447,7 +10482,8 @@ const VAutocomplete = genericComponent()({
10447
10482
  } = _ref2;
10448
10483
  return props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
10449
10484
  "modelValue": isSelected,
10450
- "ripple": false
10485
+ "ripple": false,
10486
+ "tabindex": "-1"
10451
10487
  }, null) : undefined;
10452
10488
  },
10453
10489
  title: () => {
@@ -13563,7 +13599,7 @@ const VCombobox = genericComponent()({
13563
13599
  textColorClasses,
13564
13600
  textColorStyles
13565
13601
  } = useTextColor(color);
13566
- const model = useProxiedModel(props, 'modelValue', [], v => transformIn(wrapInArray(v || [])), v => {
13602
+ const model = useProxiedModel(props, 'modelValue', [], v => transformIn(wrapInArray(v)), v => {
13567
13603
  const transformed = transformOut(v);
13568
13604
  return props.multiple ? transformed : transformed[0] ?? null;
13569
13605
  });
@@ -13741,6 +13777,7 @@ const VCombobox = genericComponent()({
13741
13777
  useRender(() => {
13742
13778
  const hasChips = !!(props.chips || slots.chip);
13743
13779
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
13780
+ const isDirty = model.value.length > 0;
13744
13781
  const [textFieldProps] = VTextField.filterProps(props);
13745
13782
  return createVNode(VTextField, mergeProps({
13746
13783
  "ref": vTextFieldRef
@@ -13750,7 +13787,7 @@ const VCombobox = genericComponent()({
13750
13787
  if (v == null) model.value = [];
13751
13788
  }],
13752
13789
  "validationValue": model.externalValue,
13753
- "dirty": model.value.length > 0,
13790
+ "dirty": isDirty,
13754
13791
  "class": ['v-combobox', {
13755
13792
  'v-combobox--active-menu': menu.value,
13756
13793
  'v-combobox--chips': !!props.chips,
@@ -13759,6 +13796,7 @@ const VCombobox = genericComponent()({
13759
13796
  }],
13760
13797
  "appendInnerIcon": props.items.length ? props.menuIcon : undefined,
13761
13798
  "readonly": props.readonly,
13799
+ "placeholder": isDirty ? undefined : props.placeholder,
13762
13800
  "onClick:clear": onClear,
13763
13801
  "onMousedown:control": onMousedownControl,
13764
13802
  "onFocus": () => isFocused.value = true,
@@ -13805,7 +13843,8 @@ const VCombobox = genericComponent()({
13805
13843
  } = _ref2;
13806
13844
  return props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
13807
13845
  "modelValue": isSelected,
13808
- "ripple": false
13846
+ "ripple": false,
13847
+ "tabindex": "-1"
13809
13848
  }, null) : undefined;
13810
13849
  },
13811
13850
  title: () => {
@@ -14215,7 +14254,6 @@ const VFileInput = genericComponent()({
14215
14254
  multiple: Boolean,
14216
14255
  hint: String,
14217
14256
  persistentHint: Boolean,
14218
- placeholder: String,
14219
14257
  showSize: {
14220
14258
  type: [Boolean, Number],
14221
14259
  default: false,
@@ -17431,6 +17469,7 @@ const VTextarea = genericComponent()({
17431
17469
  validator: v => !isNaN(parseFloat(v))
17432
17470
  },
17433
17471
  suffix: String,
17472
+ modelModifiers: Object,
17434
17473
  ...makeVInputProps(),
17435
17474
  ...makeVFieldProps()
17436
17475
  },
@@ -17495,12 +17534,14 @@ const VTextarea = genericComponent()({
17495
17534
  }
17496
17535
  function onInput(e) {
17497
17536
  const el = e.target;
17498
- const caretPosition = [el.selectionStart, el.selectionEnd];
17499
17537
  model.value = el.value;
17500
- nextTick(() => {
17501
- el.selectionStart = caretPosition[0];
17502
- el.selectionEnd = caretPosition[1];
17503
- });
17538
+ if (props.modelModifiers?.trim) {
17539
+ const caretPosition = [el.selectionStart, el.selectionEnd];
17540
+ nextTick(() => {
17541
+ el.selectionStart = caretPosition[0];
17542
+ el.selectionEnd = caretPosition[1];
17543
+ });
17544
+ }
17504
17545
  }
17505
17546
  const sizerRef = ref();
17506
17547
  function calculateInputHeight() {
@@ -18505,7 +18546,7 @@ function createVuetify$1() {
18505
18546
  locale
18506
18547
  };
18507
18548
  }
18508
- const version$1 = "3.2.0-dev-20230407.0";
18549
+ const version$1 = "3.2.0-dev-20230415.0";
18509
18550
  createVuetify$1.version = version$1;
18510
18551
 
18511
18552
  // Vue's inject() can only be used in setup
@@ -18525,7 +18566,7 @@ const createVuetify = function () {
18525
18566
  ...options
18526
18567
  });
18527
18568
  };
18528
- const version = "3.2.0-dev-20230407.0";
18569
+ const version = "3.2.0-dev-20230415.0";
18529
18570
  createVuetify.version = version;
18530
18571
 
18531
18572
  export { components, createVuetify, directives, useDisplay, useLayout, useLocale, useRtl, useTheme, version };