vuetify 3.5.8 → 3.5.9

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 (81) hide show
  1. package/dist/json/attributes.json +419 -7
  2. package/dist/json/importMap-labs.json +20 -8
  3. package/dist/json/importMap.json +150 -150
  4. package/dist/json/tags.json +118 -0
  5. package/dist/json/web-types.json +1315 -8
  6. package/dist/vuetify-labs.css +1437 -1420
  7. package/dist/vuetify-labs.d.ts +3021 -692
  8. package/dist/vuetify-labs.esm.js +790 -230
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +790 -230
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +592 -591
  13. package/dist/vuetify.d.ts +569 -68
  14. package/dist/vuetify.esm.js +220 -20
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +220 -20
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +486 -466
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAutocomplete/VAutocomplete.mjs +5 -3
  22. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  23. package/lib/components/VAutocomplete/index.d.mts +138 -6
  24. package/lib/components/VColorPicker/VColorPickerPreview.css +1 -0
  25. package/lib/components/VColorPicker/VColorPickerPreview.sass +1 -0
  26. package/lib/components/VColorPicker/_variables.scss +1 -0
  27. package/lib/components/VCombobox/VCombobox.mjs +5 -3
  28. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  29. package/lib/components/VCombobox/index.d.mts +138 -6
  30. package/lib/components/VDatePicker/VDatePickerControls.mjs +1 -0
  31. package/lib/components/VDatePicker/VDatePickerControls.mjs.map +1 -1
  32. package/lib/components/VList/VList.mjs +8 -2
  33. package/lib/components/VList/VList.mjs.map +1 -1
  34. package/lib/components/VList/VListGroup.mjs +3 -1
  35. package/lib/components/VList/VListGroup.mjs.map +1 -1
  36. package/lib/components/VList/VListItem.mjs +17 -4
  37. package/lib/components/VList/VListItem.mjs.map +1 -1
  38. package/lib/components/VList/index.d.mts +108 -6
  39. package/lib/components/VSelect/VSelect.mjs +5 -3
  40. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  41. package/lib/components/VSelect/index.d.mts +138 -6
  42. package/lib/components/index.d.mts +522 -24
  43. package/lib/composables/nested/activeStrategies.mjs +121 -0
  44. package/lib/composables/nested/activeStrategies.mjs.map +1 -0
  45. package/lib/composables/nested/nested.mjs +50 -1
  46. package/lib/composables/nested/nested.mjs.map +1 -1
  47. package/lib/composables/nested/selectStrategies.mjs +4 -2
  48. package/lib/composables/nested/selectStrategies.mjs.map +1 -1
  49. package/lib/entry-bundler.mjs +1 -1
  50. package/lib/framework.mjs +1 -1
  51. package/lib/iconsets/fa.mjs +2 -0
  52. package/lib/iconsets/fa.mjs.map +1 -1
  53. package/lib/iconsets/fa4.mjs +2 -0
  54. package/lib/iconsets/fa4.mjs.map +1 -1
  55. package/lib/iconsets/md.mjs +2 -0
  56. package/lib/iconsets/md.mjs.map +1 -1
  57. package/lib/iconsets/mdi-svg.mjs +2 -0
  58. package/lib/iconsets/mdi-svg.mjs.map +1 -1
  59. package/lib/iconsets/mdi.mjs +2 -0
  60. package/lib/iconsets/mdi.mjs.map +1 -1
  61. package/lib/index.d.mts +47 -44
  62. package/lib/labs/VTreeview/VTreeview.mjs +154 -0
  63. package/lib/labs/VTreeview/VTreeview.mjs.map +1 -0
  64. package/lib/labs/VTreeview/VTreeviewChildren.mjs +98 -0
  65. package/lib/labs/VTreeview/VTreeviewChildren.mjs.map +1 -0
  66. package/lib/labs/VTreeview/VTreeviewGroup.mjs +48 -0
  67. package/lib/labs/VTreeview/VTreeviewGroup.mjs.map +1 -0
  68. package/lib/labs/VTreeview/VTreeviewItem.css +17 -0
  69. package/lib/labs/VTreeview/VTreeviewItem.mjs +86 -0
  70. package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -0
  71. package/lib/labs/VTreeview/VTreeviewItem.sass +19 -0
  72. package/lib/labs/VTreeview/index.d.mts +1975 -0
  73. package/lib/labs/VTreeview/index.mjs +4 -0
  74. package/lib/labs/VTreeview/index.mjs.map +1 -0
  75. package/lib/labs/VTreeview/shared.mjs +4 -0
  76. package/lib/labs/VTreeview/shared.mjs.map +1 -0
  77. package/lib/labs/VTreeview/variables.scss +8 -0
  78. package/lib/labs/components.d.mts +3708 -1773
  79. package/lib/labs/components.mjs +3 -2
  80. package/lib/labs/components.mjs.map +1 -1
  81. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.5.8
2
+ * Vuetify v3.5.9
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -4366,6 +4366,8 @@ const aliases = {
4366
4366
  plus: 'mdi-plus',
4367
4367
  minus: 'mdi-minus',
4368
4368
  calendar: 'mdi-calendar',
4369
+ treeviewCollapse: 'mdi-menu-down',
4370
+ treeviewExpand: 'mdi-menu-right',
4369
4371
  eyeDropper: 'mdi-eyedropper'
4370
4372
  };
4371
4373
  const mdi = {
@@ -7752,6 +7754,126 @@ function useList() {
7752
7754
  return inject$1(ListKey, null);
7753
7755
  }
7754
7756
 
7757
+ /* eslint-disable sonarjs/no-identical-functions */
7758
+ // Utilities
7759
+ const independentActiveStrategy = mandatory => {
7760
+ const strategy = {
7761
+ activate: _ref => {
7762
+ let {
7763
+ id,
7764
+ value,
7765
+ activated
7766
+ } = _ref;
7767
+ id = toRaw(id);
7768
+
7769
+ // When mandatory and we're trying to deselect when id
7770
+ // is the only currently selected item then do nothing
7771
+ if (mandatory && !value && activated.size === 1 && activated.has(id)) return activated;
7772
+ if (value) {
7773
+ activated.add(id);
7774
+ } else {
7775
+ activated.delete(id);
7776
+ }
7777
+ return activated;
7778
+ },
7779
+ in: (v, children, parents) => {
7780
+ let set = new Set();
7781
+ for (const id of v || []) {
7782
+ set = strategy.activate({
7783
+ id,
7784
+ value: true,
7785
+ activated: new Set(set),
7786
+ children,
7787
+ parents
7788
+ });
7789
+ }
7790
+ return set;
7791
+ },
7792
+ out: v => {
7793
+ return Array.from(v);
7794
+ }
7795
+ };
7796
+ return strategy;
7797
+ };
7798
+ const independentSingleActiveStrategy = mandatory => {
7799
+ const parentStrategy = independentActiveStrategy(mandatory);
7800
+ const strategy = {
7801
+ activate: _ref2 => {
7802
+ let {
7803
+ activated,
7804
+ id,
7805
+ ...rest
7806
+ } = _ref2;
7807
+ id = toRaw(id);
7808
+ const singleSelected = activated.has(id) ? new Set([id]) : new Set();
7809
+ return parentStrategy.activate({
7810
+ ...rest,
7811
+ id,
7812
+ activated: singleSelected
7813
+ });
7814
+ },
7815
+ in: (v, children, parents) => {
7816
+ let set = new Set();
7817
+ if (v?.length) {
7818
+ set = parentStrategy.in(v.slice(0, 1), children, parents);
7819
+ }
7820
+ return set;
7821
+ },
7822
+ out: (v, children, parents) => {
7823
+ return parentStrategy.out(v, children, parents);
7824
+ }
7825
+ };
7826
+ return strategy;
7827
+ };
7828
+ const leafActiveStrategy = mandatory => {
7829
+ const parentStrategy = independentActiveStrategy(mandatory);
7830
+ const strategy = {
7831
+ activate: _ref3 => {
7832
+ let {
7833
+ id,
7834
+ activated,
7835
+ children,
7836
+ ...rest
7837
+ } = _ref3;
7838
+ id = toRaw(id);
7839
+ if (children.has(id)) return activated;
7840
+ return parentStrategy.activate({
7841
+ id,
7842
+ activated,
7843
+ children,
7844
+ ...rest
7845
+ });
7846
+ },
7847
+ in: parentStrategy.in,
7848
+ out: parentStrategy.out
7849
+ };
7850
+ return strategy;
7851
+ };
7852
+ const leafSingleActiveStrategy = mandatory => {
7853
+ const parentStrategy = independentSingleActiveStrategy(mandatory);
7854
+ const strategy = {
7855
+ activate: _ref4 => {
7856
+ let {
7857
+ id,
7858
+ activated,
7859
+ children,
7860
+ ...rest
7861
+ } = _ref4;
7862
+ id = toRaw(id);
7863
+ if (children.has(id)) return activated;
7864
+ return parentStrategy.activate({
7865
+ id,
7866
+ activated,
7867
+ children,
7868
+ ...rest
7869
+ });
7870
+ },
7871
+ in: parentStrategy.in,
7872
+ out: parentStrategy.out
7873
+ };
7874
+ return strategy;
7875
+ };
7876
+
7755
7877
  const singleOpenStrategy = {
7756
7878
  open: _ref => {
7757
7879
  let {
@@ -7836,7 +7958,8 @@ const independentSelectStrategy = mandatory => {
7836
7958
  if (mandatory && !value) {
7837
7959
  const on = Array.from(selected.entries()).reduce((arr, _ref2) => {
7838
7960
  let [key, value] = _ref2;
7839
- return value === 'on' ? [...arr, key] : arr;
7961
+ if (value === 'on') arr.push(key);
7962
+ return arr;
7840
7963
  }, []);
7841
7964
  if (on.length === 1 && on[0] === id) return selected;
7842
7965
  }
@@ -7978,7 +8101,8 @@ const classicSelectStrategy = mandatory => {
7978
8101
  if (mandatory && !value) {
7979
8102
  const on = Array.from(selected.entries()).reduce((arr, _ref7) => {
7980
8103
  let [key, value] = _ref7;
7981
- return value === 'on' ? [...arr, key] : arr;
8104
+ if (value === 'on') arr.push(key);
8105
+ return arr;
7982
8106
  }, []);
7983
8107
  if (on.length === 0) return original;
7984
8108
  }
@@ -8022,16 +8146,24 @@ const emptyNested = {
8022
8146
  children: ref(new Map()),
8023
8147
  open: () => null,
8024
8148
  openOnSelect: () => null,
8149
+ activate: () => null,
8025
8150
  select: () => null,
8151
+ activatable: ref(false),
8152
+ selectable: ref(false),
8026
8153
  opened: ref(new Set()),
8154
+ activated: ref(new Set()),
8027
8155
  selected: ref(new Map()),
8028
8156
  selectedValues: ref([])
8029
8157
  }
8030
8158
  };
8031
8159
  const makeNestedProps = propsFactory({
8160
+ activatable: Boolean,
8161
+ selectable: Boolean,
8162
+ activeStrategy: [String, Function],
8032
8163
  selectStrategy: [String, Function],
8033
8164
  openStrategy: [String, Object],
8034
8165
  opened: Array,
8166
+ activated: Array,
8035
8167
  selected: Array,
8036
8168
  mandatory: Boolean
8037
8169
  }, 'nested');
@@ -8040,6 +8172,20 @@ const useNested = props => {
8040
8172
  const children = ref(new Map());
8041
8173
  const parents = ref(new Map());
8042
8174
  const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()]);
8175
+ const activeStrategy = computed(() => {
8176
+ if (typeof props.activeStrategy === 'object') return props.activeStrategy;
8177
+ switch (props.activeStrategy) {
8178
+ case 'leaf':
8179
+ return leafActiveStrategy(props.mandatory);
8180
+ case 'single-leaf':
8181
+ return leafSingleActiveStrategy(props.mandatory);
8182
+ case 'independent':
8183
+ return independentActiveStrategy(props.mandatory);
8184
+ case 'single-independent':
8185
+ default:
8186
+ return independentSingleActiveStrategy(props.mandatory);
8187
+ }
8188
+ });
8043
8189
  const selectStrategy = computed(() => {
8044
8190
  if (typeof props.selectStrategy === 'object') return props.selectStrategy;
8045
8191
  switch (props.selectStrategy) {
@@ -8068,6 +8214,7 @@ const useNested = props => {
8068
8214
  return multipleOpenStrategy;
8069
8215
  }
8070
8216
  });
8217
+ const activated = useProxiedModel(props, 'activated', props.activated, v => activeStrategy.value.in(v, children.value, parents.value), v => activeStrategy.value.out(v, children.value, parents.value));
8071
8218
  const selected = useProxiedModel(props, 'selected', props.selected, v => selectStrategy.value.in(v, children.value, parents.value), v => selectStrategy.value.out(v, children.value, parents.value));
8072
8219
  onBeforeUnmount(() => {
8073
8220
  isUnmounted = true;
@@ -8086,6 +8233,9 @@ const useNested = props => {
8086
8233
  id: shallowRef(),
8087
8234
  root: {
8088
8235
  opened,
8236
+ activatable: toRef(props, 'activatable'),
8237
+ selectable: toRef(props, 'selectable'),
8238
+ activated,
8089
8239
  selected,
8090
8240
  selectedValues: computed(() => {
8091
8241
  const arr = [];
@@ -8159,6 +8309,26 @@ const useNested = props => {
8159
8309
  newSelected && (selected.value = newSelected);
8160
8310
  nested.root.openOnSelect(id, value, event);
8161
8311
  },
8312
+ activate: (id, value, event) => {
8313
+ if (!props.activatable) {
8314
+ return nested.root.select(id, true, event);
8315
+ }
8316
+ vm.emit('click:activate', {
8317
+ id,
8318
+ value,
8319
+ path: getPath(id),
8320
+ event
8321
+ });
8322
+ const newActivated = activeStrategy.value.activate({
8323
+ id,
8324
+ value,
8325
+ activated: new Set(activated.value),
8326
+ children: children.value,
8327
+ parents: parents.value,
8328
+ event
8329
+ });
8330
+ newActivated && (activated.value = newActivated);
8331
+ },
8162
8332
  children,
8163
8333
  parents
8164
8334
  }
@@ -8177,6 +8347,8 @@ const useNestedItem = (id, isGroup) => {
8177
8347
  openOnSelect: (open, e) => parent.root.openOnSelect(computedId.value, open, e),
8178
8348
  isOpen: computed(() => parent.root.opened.value.has(computedId.value)),
8179
8349
  parent: computed(() => parent.root.parents.value.get(computedId.value)),
8350
+ activate: (activated, e) => parent.root.activate(computedId.value, activated, e),
8351
+ isActivated: computed(() => parent.root.activated.value.has(toRaw(computedId.value))),
8180
8352
  select: (selected, e) => parent.root.select(computedId.value, selected, e),
8181
8353
  isSelected: computed(() => parent.root.selected.value.get(toRaw(computedId.value)) === 'on'),
8182
8354
  isIndeterminate: computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),
@@ -8299,7 +8471,9 @@ const VListGroup = genericComponent()({
8299
8471
  }, [slots.default?.()]), [[vShow, isOpen.value]])]
8300
8472
  })]
8301
8473
  }));
8302
- return {};
8474
+ return {
8475
+ isOpen
8476
+ };
8303
8477
  }
8304
8478
  });
8305
8479
 
@@ -8372,6 +8546,8 @@ const VListItem = genericComponent()({
8372
8546
  const link = useLink(props, attrs);
8373
8547
  const id = computed(() => props.value === undefined ? link.href.value : props.value);
8374
8548
  const {
8549
+ activate,
8550
+ isActivated,
8375
8551
  select,
8376
8552
  isSelected,
8377
8553
  isIndeterminate,
@@ -8381,9 +8557,9 @@ const VListItem = genericComponent()({
8381
8557
  openOnSelect
8382
8558
  } = useNestedItem(id, false);
8383
8559
  const list = useList();
8384
- const isActive = computed(() => props.active !== false && (props.active || link.isActive?.value || isSelected.value));
8560
+ const isActive = computed(() => props.active !== false && (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value)));
8385
8561
  const isLink = computed(() => props.link !== false && link.isLink.value);
8386
- const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!list));
8562
+ const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || !!list && (root.selectable.value || root.activatable.value || props.value != null)));
8387
8563
  const roundedProps = computed(() => props.rounded || props.nav);
8388
8564
  const color = computed(() => props.color ?? props.activeColor);
8389
8565
  const variantProps = computed(() => ({
@@ -8434,7 +8610,13 @@ const VListItem = genericComponent()({
8434
8610
  emit('click', e);
8435
8611
  if (isGroupActivator || !isClickable.value) return;
8436
8612
  link.navigate?.(e);
8437
- props.value != null && select(!isSelected.value, e);
8613
+ if (root.activatable) {
8614
+ activate(!isActivated.value, e);
8615
+ } else if (root.selectable) {
8616
+ select(!isSelected.value, e);
8617
+ } else if (props.value != null) {
8618
+ select(!isSelected.value, e);
8619
+ }
8438
8620
  }
8439
8621
  function onKeyDown(e) {
8440
8622
  if (e.key === 'Enter' || e.key === ' ') {
@@ -8550,7 +8732,12 @@ const VListItem = genericComponent()({
8550
8732
  }, null)])]
8551
8733
  }), [[resolveDirective("ripple"), isClickable.value && props.ripple]]);
8552
8734
  });
8553
- return {};
8735
+ return {
8736
+ isGroupActivator,
8737
+ isSelected,
8738
+ list,
8739
+ select
8740
+ };
8554
8741
  }
8555
8742
  });
8556
8743
 
@@ -8892,8 +9079,10 @@ const VList = genericComponent()({
8892
9079
  props: makeVListProps(),
8893
9080
  emits: {
8894
9081
  'update:selected': value => true,
9082
+ 'update:activated': value => true,
8895
9083
  'update:opened': value => true,
8896
9084
  'click:open': value => true,
9085
+ 'click:activate': value => true,
8897
9086
  'click:select': value => true
8898
9087
  },
8899
9088
  setup(props, _ref) {
@@ -8926,7 +9115,9 @@ const VList = genericComponent()({
8926
9115
  roundedClasses
8927
9116
  } = useRounded(props);
8928
9117
  const {
9118
+ children,
8929
9119
  open,
9120
+ parents,
8930
9121
  select
8931
9122
  } = useNested(props);
8932
9123
  const lineClasses = computed(() => props.lines ? `v-list--${props.lines}-line` : undefined);
@@ -9016,7 +9207,9 @@ const VList = genericComponent()({
9016
9207
  return {
9017
9208
  open,
9018
9209
  select,
9019
- focus
9210
+ focus,
9211
+ children,
9212
+ parents
9020
9213
  };
9021
9214
  }
9022
9215
  });
@@ -11896,9 +12089,11 @@ const VSelect = genericComponent()({
11896
12089
  });
11897
12090
  }
11898
12091
  });
11899
- watch(() => props.items, val => {
11900
- if (!isFocused.value || !val.length || menu.value) return;
11901
- menu.value = true;
12092
+ watch(() => props.items, (newVal, oldVal) => {
12093
+ if (menu.value) return;
12094
+ if (isFocused.value && !oldVal.length && newVal.length) {
12095
+ menu.value = true;
12096
+ }
11902
12097
  });
11903
12098
  useRender(() => {
11904
12099
  const hasChips = !!(props.chips || slots.chip);
@@ -12458,9 +12653,11 @@ const VAutocomplete = genericComponent()({
12458
12653
  });
12459
12654
  }
12460
12655
  });
12461
- watch(() => props.items, val => {
12462
- if (!isFocused.value || !val.length || menu.value) return;
12463
- menu.value = true;
12656
+ watch(() => props.items, (newVal, oldVal) => {
12657
+ if (menu.value) return;
12658
+ if (isFocused.value && !oldVal.length && newVal.length) {
12659
+ menu.value = true;
12660
+ }
12464
12661
  });
12465
12662
  useRender(() => {
12466
12663
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
@@ -16263,9 +16460,11 @@ const VCombobox = genericComponent()({
16263
16460
  });
16264
16461
  }
16265
16462
  });
16266
- watch(() => props.items, val => {
16267
- if (!isFocused.value || !val.length || menu.value) return;
16268
- menu.value = true;
16463
+ watch(() => props.items, (newVal, oldVal) => {
16464
+ if (menu.value) return;
16465
+ if (isFocused.value && !oldVal.length && newVal.length) {
16466
+ menu.value = true;
16467
+ }
16269
16468
  });
16270
16469
  useRender(() => {
16271
16470
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
@@ -20286,6 +20485,7 @@ const VDatePickerControls = genericComponent()({
20286
20485
  emit('click:month');
20287
20486
  }
20288
20487
  useRender(() => {
20488
+ // TODO: add slot support and scope defaults
20289
20489
  return createVNode("div", {
20290
20490
  "class": ['v-date-picker-controls']
20291
20491
  }, [createVNode(VBtn, {
@@ -25773,7 +25973,7 @@ function createVuetify$1() {
25773
25973
  goTo
25774
25974
  };
25775
25975
  }
25776
- const version$1 = "3.5.8";
25976
+ const version$1 = "3.5.9";
25777
25977
  createVuetify$1.version = version$1;
25778
25978
 
25779
25979
  // Vue's inject() can only be used in setup
@@ -25798,7 +25998,7 @@ const createVuetify = function () {
25798
25998
  ...options
25799
25999
  });
25800
26000
  };
25801
- const version = "3.5.8";
26001
+ const version = "3.5.9";
25802
26002
  createVuetify.version = version;
25803
26003
 
25804
26004
  export { components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };