@vuetify/nightly 3.9.2-master.2025-07-29 → 3.9.3-master.2025-07-30

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 (40) hide show
  1. package/CHANGELOG.md +9 -62
  2. package/dist/json/attributes.json +3905 -3905
  3. package/dist/json/importMap-labs.json +18 -18
  4. package/dist/json/importMap.json +134 -134
  5. package/dist/json/web-types.json +7077 -7077
  6. package/dist/vuetify-labs.cjs +47 -24
  7. package/dist/vuetify-labs.css +3395 -3387
  8. package/dist/vuetify-labs.d.ts +48 -47
  9. package/dist/vuetify-labs.esm.js +47 -24
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +47 -24
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +15 -9
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +2289 -2281
  16. package/dist/vuetify.d.ts +48 -47
  17. package/dist/vuetify.esm.js +15 -9
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +15 -9
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +13 -12
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VCombobox/VCombobox.js +10 -6
  25. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  26. package/lib/components/VWindow/VWindow.css +8 -0
  27. package/lib/components/VWindow/VWindow.sass +9 -0
  28. package/lib/composables/theme.d.ts +1 -0
  29. package/lib/composables/theme.js +3 -1
  30. package/lib/composables/theme.js.map +1 -1
  31. package/lib/entry-bundler.js +1 -1
  32. package/lib/framework.d.ts +48 -47
  33. package/lib/framework.js +1 -1
  34. package/lib/labs/VVideo/VVideo.css +1 -1
  35. package/lib/labs/VVideo/VVideo.js +2 -2
  36. package/lib/labs/VVideo/VVideo.js.map +1 -1
  37. package/lib/labs/VVideo/VVideo.sass +2 -0
  38. package/lib/labs/VVideo/VVideoControls.js +32 -15
  39. package/lib/labs/VVideo/VVideoControls.js.map +1 -1
  40. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.9.2-master.2025-07-29
2
+ * Vuetify v3.9.3-master.2025-07-30
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -2695,6 +2695,7 @@
2695
2695
  return acc;
2696
2696
  });
2697
2697
  const current = vue.toRef(() => computedThemes.value[name.value]);
2698
+ const isSystem = vue.toRef(() => _name.value === 'system');
2698
2699
  const styles = vue.computed(() => {
2699
2700
  const lines = [];
2700
2701
  const important = parsedOptions.unimportant ? '' : ' !important';
@@ -2782,7 +2783,7 @@
2782
2783
  }
2783
2784
  }
2784
2785
  function change(themeName) {
2785
- if (!themeNames.value.includes(themeName)) {
2786
+ if (themeName !== 'system' && !themeNames.value.includes(themeName)) {
2786
2787
  consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
2787
2788
  return;
2788
2789
  }
@@ -2815,6 +2816,7 @@
2815
2816
  cycle,
2816
2817
  toggle,
2817
2818
  isDisabled: parsedOptions.isDisabled,
2819
+ isSystem,
2818
2820
  name,
2819
2821
  themes,
2820
2822
  current,
@@ -18801,19 +18803,23 @@
18801
18803
  get: () => {
18802
18804
  return _search.value;
18803
18805
  },
18804
- set: val => {
18806
+ set: async val => {
18805
18807
  _search.value = val ?? '';
18806
18808
  if (!props.multiple && !hasSelectionSlot.value) {
18807
18809
  model.value = [transformItem$3(props, val)];
18808
18810
  vue.nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
18809
18811
  }
18810
18812
  if (val && props.multiple && props.delimiters?.length) {
18811
- const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
18813
+ const signsToMatch = props.delimiters.map(escapeForRegex).join('|');
18814
+ const values = val.split(new RegExp(`(?:${signsToMatch})+`));
18812
18815
  if (values.length > 1) {
18813
- values.forEach(v => {
18816
+ for (let v of values) {
18814
18817
  v = v.trim();
18815
- if (v) select(transformItem$3(props, v));
18816
- });
18818
+ if (v) {
18819
+ select(transformItem$3(props, v));
18820
+ await vue.nextTick();
18821
+ }
18822
+ }
18817
18823
  _search.value = '';
18818
18824
  }
18819
18825
  }
@@ -34139,7 +34145,8 @@
34139
34145
  t
34140
34146
  } = useLocale();
34141
34147
  const {
34142
- themeClasses
34148
+ themeClasses,
34149
+ current: currentTheme
34143
34150
  } = provideTheme(props);
34144
34151
  const {
34145
34152
  densityClasses
@@ -34154,6 +34161,13 @@
34154
34161
  const fallbackBackground = props.detached ? 'surface' : undefined;
34155
34162
  return props.backgroundColor ?? fallbackBackground;
34156
34163
  });
34164
+ const trackColor = vue.toRef(() => {
34165
+ if (props.trackColor) {
34166
+ return props.trackColor;
34167
+ }
34168
+ const fallback = currentTheme.value.dark || !props.pills ? undefined : 'surface';
34169
+ return (props.pills ? props.backgroundColor : props.color) ?? fallback;
34170
+ });
34157
34171
  const playing = useProxiedModel(props, 'playing');
34158
34172
  const progress = useProxiedModel(props, 'progress');
34159
34173
  const volume = useProxiedModel(props, 'volume', 0, v => Number(v ?? 0));
@@ -34214,7 +34228,8 @@
34214
34228
  };
34215
34229
  const regularBtnSize = innerDefaults.VIconBtn.size;
34216
34230
  const playBtnSize = props.pills ? regularBtnSize + 8 : regularBtnSize;
34217
- const pillClasses = ['v-video-control__pill', props.pills ? elevationClasses.value : []];
34231
+ const pillClasses = ['v-video-control__pill', props.pills ? elevationClasses.value : [], props.pills ? backgroundColorClasses.value : []];
34232
+ const pillStyles = props.pills ? backgroundColorStyles.value : [];
34218
34233
  const slotProps = {
34219
34234
  play,
34220
34235
  pause,
@@ -34237,30 +34252,34 @@
34237
34252
  'v-video-controls--floating': props.floating
34238
34253
  }, {
34239
34254
  'v-video-controls--split-time': props.splitTime
34240
- }, backgroundColorClasses.value, props.detached && !props.pills ? elevationClasses.value : [], densityClasses.value, themeClasses.value]),
34241
- "style": vue.normalizeStyle([backgroundColorStyles.value, {
34255
+ }, !props.pills ? backgroundColorClasses.value : [], props.detached && !props.pills ? elevationClasses.value : [], densityClasses.value, themeClasses.value]),
34256
+ "style": vue.normalizeStyle([!props.pills ? backgroundColorStyles.value : [], {
34242
34257
  '--v-video-controls-pill-height': `${regularBtnSize}px`
34243
34258
  }])
34244
34259
  }, [vue.createVNode(VDefaultsProvider, {
34245
34260
  "defaults": innerDefaults
34246
34261
  }, {
34247
34262
  default: () => [slots.default?.(slotProps) ?? vue.createElementVNode(vue.Fragment, null, [props.variant !== 'mini' && vue.createElementVNode(vue.Fragment, null, [!props.hidePlay && vue.createElementVNode("div", {
34248
- "class": vue.normalizeClass([pillClasses, 'v-video__action-play'])
34263
+ "class": vue.normalizeClass([pillClasses, 'v-video__action-play']),
34264
+ "style": vue.normalizeStyle(pillStyles)
34249
34265
  }, [vue.withDirectives(vue.createVNode(VIconBtn, {
34250
34266
  "icon": playing.value ? '$pause' : '$play',
34251
34267
  "size": playBtnSize,
34252
34268
  "aria-label": labels.value.playAction,
34253
34269
  "onClick": () => playing.value = !playing.value
34254
34270
  }, null), [[Tooltip, labels.value.playAction, 'top']])]), slots.prepend && vue.createElementVNode("div", {
34255
- "class": vue.normalizeClass(pillClasses)
34271
+ "class": vue.normalizeClass(pillClasses),
34272
+ "style": vue.normalizeStyle(pillStyles)
34256
34273
  }, [slots.prepend(slotProps)]), props.splitTime ? vue.createElementVNode("span", {
34257
- "class": vue.normalizeClass([pillClasses, 'v-video__time'])
34274
+ "class": vue.normalizeClass([pillClasses, 'v-video__time']),
34275
+ "style": vue.normalizeStyle(pillStyles)
34258
34276
  }, [currentTime.value.elapsed]) : props.variant !== 'default' ? vue.createElementVNode("span", {
34259
- "class": vue.normalizeClass([pillClasses, 'v-video__time'])
34277
+ "class": vue.normalizeClass([pillClasses, 'v-video__time']),
34278
+ "style": vue.normalizeStyle(pillStyles)
34260
34279
  }, [currentTime.value.elapsed, vue.createTextVNode(" / "), currentTime.value.total]) : '', vue.createVNode(VSlider, {
34261
34280
  "modelValue": props.progress,
34262
34281
  "noKeyboard": true,
34263
- "color": props.trackColor ?? props.color,
34282
+ "color": trackColor.value ?? 'surface-variant',
34264
34283
  "trackColor": props.variant === 'tube' ? 'white' : undefined,
34265
34284
  "class": "v-video__track",
34266
34285
  "thumbLabel": "always",
@@ -34269,18 +34288,22 @@
34269
34288
  }, {
34270
34289
  'thumb-label': () => currentTime.value.elapsed
34271
34290
  }), props.variant === 'tube' && vue.createVNode(VSpacer, null, null), props.splitTime ? vue.createElementVNode("span", {
34272
- "class": vue.normalizeClass([pillClasses, 'v-video__time'])
34291
+ "class": vue.normalizeClass([pillClasses, 'v-video__time']),
34292
+ "style": vue.normalizeStyle(pillStyles)
34273
34293
  }, [currentTime.value.remaining]) : '']), props.variant === 'mini' && vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VSpacer, null, null), slots.prepend && vue.createElementVNode("div", {
34274
- "class": vue.normalizeClass(pillClasses)
34294
+ "class": vue.normalizeClass(pillClasses),
34295
+ "style": vue.normalizeStyle(pillStyles)
34275
34296
  }, [slots.prepend(slotProps)]), !props.hidePlay && vue.createElementVNode("div", {
34276
- "class": vue.normalizeClass([pillClasses, 'v-video__action-play'])
34297
+ "class": vue.normalizeClass([pillClasses, 'v-video__action-play']),
34298
+ "style": vue.normalizeStyle(pillStyles)
34277
34299
  }, [vue.withDirectives(vue.createVNode(VIconBtn, {
34278
34300
  "icon": playing.value ? '$pause' : '$play',
34279
34301
  "size": playBtnSize,
34280
34302
  "aria-label": labels.value.playAction,
34281
34303
  "onClick": () => playing.value = !playing.value
34282
34304
  }, null), [[Tooltip, labels.value.playAction, 'top']])])]), (!props.hideVolume || !props.hideFullscreen || slots.append) && vue.createElementVNode("div", {
34283
- "class": vue.normalizeClass(pillClasses)
34305
+ "class": vue.normalizeClass(pillClasses),
34306
+ "style": vue.normalizeStyle(pillStyles)
34284
34307
  }, [!props.hideVolume && vue.createVNode(VVideoVolume, vue.mergeProps({
34285
34308
  "key": "volume-control",
34286
34309
  "sliderProps": {
@@ -34673,9 +34696,9 @@
34673
34696
  }, {
34674
34697
  default: () => [vue.createElementVNode("div", {
34675
34698
  "class": vue.normalizeClass(['v-video__overlay-fill', ...roundedContainerClasses.value])
34676
- }, [overlayPlayIcon])]
34699
+ }, [props.variant === 'player' && overlayPlayIcon])]
34677
34700
  })]
34678
- }), vue.createVNode(VOverlay, vue.mergeProps({
34701
+ }), props.variant === 'player' && vue.createVNode(VOverlay, vue.mergeProps({
34679
34702
  "key": "loading-overlay",
34680
34703
  "modelValue": state.value === 'loading' || waiting.value,
34681
34704
  "opacity": ".1"
@@ -35137,7 +35160,7 @@
35137
35160
  };
35138
35161
  });
35139
35162
  }
35140
- const version$1 = "3.9.2-master.2025-07-29";
35163
+ const version$1 = "3.9.3-master.2025-07-30";
35141
35164
  createVuetify$1.version = version$1;
35142
35165
 
35143
35166
  // Vue's inject() can only be used in setup
@@ -35435,7 +35458,7 @@
35435
35458
 
35436
35459
  /* eslint-disable local-rules/sort-imports */
35437
35460
 
35438
- const version = "3.9.2-master.2025-07-29";
35461
+ const version = "3.9.3-master.2025-07-30";
35439
35462
 
35440
35463
  /* eslint-disable local-rules/sort-imports */
35441
35464