vuetify 3.3.15 → 3.4.0-alpha.1

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 (122) hide show
  1. package/dist/json/attributes.json +111 -11
  2. package/dist/json/importMap.json +4 -4
  3. package/dist/json/tags.json +25 -0
  4. package/dist/json/web-types.json +263 -18
  5. package/dist/vuetify-labs.css +1558 -518
  6. package/dist/vuetify-labs.d.ts +499 -179
  7. package/dist/vuetify-labs.esm.js +264 -73
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +263 -72
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +1080 -40
  12. package/dist/vuetify.d.ts +484 -170
  13. package/dist/vuetify.esm.js +264 -73
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +263 -72
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +914 -895
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAutocomplete/index.d.mts +20 -14
  21. package/lib/components/VAvatar/VAvatar.mjs +2 -1
  22. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  23. package/lib/components/VAvatar/index.d.mts +6 -0
  24. package/lib/components/VBanner/VBanner.mjs +5 -3
  25. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  26. package/lib/components/VBanner/index.d.mts +10 -0
  27. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +9 -4
  28. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  29. package/lib/components/VBreadcrumbs/index.d.mts +28 -2
  30. package/lib/components/VCarousel/index.d.mts +26 -0
  31. package/lib/components/VCheckbox/index.d.mts +12 -0
  32. package/lib/components/VColorPicker/VColorPickerPreview.css +5 -0
  33. package/lib/components/VColorPicker/VColorPickerPreview.mjs +28 -2
  34. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  35. package/lib/components/VColorPicker/VColorPickerPreview.sass +4 -0
  36. package/lib/components/VColorPicker/_variables.scss +1 -0
  37. package/lib/components/VCombobox/index.d.mts +20 -14
  38. package/lib/components/VDialog/index.d.mts +41 -20
  39. package/lib/components/VField/index.d.mts +4 -4
  40. package/lib/components/VFileInput/index.d.mts +4 -4
  41. package/lib/components/VImg/VImg.mjs +13 -1
  42. package/lib/components/VImg/VImg.mjs.map +1 -1
  43. package/lib/components/VImg/index.d.mts +26 -0
  44. package/lib/components/VList/index.d.mts +12 -12
  45. package/lib/components/VMenu/index.d.mts +41 -20
  46. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +5 -3
  47. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  48. package/lib/components/VNavigationDrawer/index.d.mts +10 -0
  49. package/lib/components/VOverlay/VOverlay.mjs +9 -4
  50. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  51. package/lib/components/VOverlay/index.d.mts +17 -8
  52. package/lib/components/VOverlay/locationStrategies.mjs +9 -9
  53. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  54. package/lib/components/VOverlay/scrollStrategies.mjs +3 -3
  55. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  56. package/lib/components/VOverlay/useActivator.mjs +50 -21
  57. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  58. package/lib/components/VRadio/index.d.mts +6 -0
  59. package/lib/components/VRangeSlider/VRangeSlider.mjs +4 -2
  60. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  61. package/lib/components/VRangeSlider/index.d.mts +14 -0
  62. package/lib/components/VSelect/index.d.mts +20 -14
  63. package/lib/components/VSelectionControl/VSelectionControl.mjs +3 -1
  64. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  65. package/lib/components/VSelectionControl/index.d.mts +6 -0
  66. package/lib/components/VSlideGroup/VSlideGroup.mjs +5 -3
  67. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  68. package/lib/components/VSlideGroup/index.d.mts +10 -0
  69. package/lib/components/VSlider/VSlider.mjs +2 -1
  70. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  71. package/lib/components/VSlider/index.d.mts +14 -0
  72. package/lib/components/VSlider/slider.mjs +5 -1
  73. package/lib/components/VSlider/slider.mjs.map +1 -1
  74. package/lib/components/VSnackbar/VSnackbar.css +9 -0
  75. package/lib/components/VSnackbar/VSnackbar.mjs +65 -6
  76. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  77. package/lib/components/VSnackbar/VSnackbar.sass +9 -0
  78. package/lib/components/VSnackbar/index.d.mts +52 -25
  79. package/lib/components/VSwitch/index.d.mts +6 -0
  80. package/lib/components/VTabs/index.d.mts +10 -0
  81. package/lib/components/VTextField/index.d.mts +16 -16
  82. package/lib/components/VTextarea/index.d.mts +4 -4
  83. package/lib/components/VTooltip/index.d.mts +41 -20
  84. package/lib/components/index.d.mts +455 -168
  85. package/lib/components/transitions/dialog-transition.mjs +4 -3
  86. package/lib/components/transitions/dialog-transition.mjs.map +1 -1
  87. package/lib/components/transitions/index.d.mts +6 -6
  88. package/lib/composables/directiveComponent.mjs +69 -0
  89. package/lib/composables/directiveComponent.mjs.map +1 -0
  90. package/lib/composables/display.mjs +23 -3
  91. package/lib/composables/display.mjs.map +1 -1
  92. package/lib/composables/resizeObserver.mjs.map +1 -1
  93. package/lib/composables/theme.mjs +7 -7
  94. package/lib/composables/theme.mjs.map +1 -1
  95. package/lib/entry-bundler.mjs +1 -1
  96. package/lib/entry-bundler.mjs.map +1 -1
  97. package/lib/framework.mjs +1 -1
  98. package/lib/framework.mjs.map +1 -1
  99. package/lib/iconsets/fa.mjs +2 -1
  100. package/lib/iconsets/fa.mjs.map +1 -1
  101. package/lib/iconsets/fa4.mjs +2 -1
  102. package/lib/iconsets/fa4.mjs.map +1 -1
  103. package/lib/iconsets/md.mjs +2 -1
  104. package/lib/iconsets/md.mjs.map +1 -1
  105. package/lib/iconsets/mdi-svg.mjs +2 -1
  106. package/lib/iconsets/mdi-svg.mjs.map +1 -1
  107. package/lib/iconsets/mdi.mjs +2 -1
  108. package/lib/iconsets/mdi.mjs.map +1 -1
  109. package/lib/index.d.mts +33 -2
  110. package/lib/labs/VBottomSheet/index.d.mts +14 -8
  111. package/lib/labs/VDateInput/index.d.mts +4 -4
  112. package/lib/labs/VOtpInput/index.d.mts +4 -4
  113. package/lib/labs/components.d.mts +18 -12
  114. package/lib/styles/main.css +1026 -0
  115. package/lib/styles/settings/_utilities.scss +20 -0
  116. package/lib/util/box.mjs +12 -0
  117. package/lib/util/box.mjs.map +1 -1
  118. package/lib/util/globals.mjs +1 -0
  119. package/lib/util/globals.mjs.map +1 -1
  120. package/lib/util/helpers.mjs +9 -1
  121. package/lib/util/helpers.mjs.map +1 -1
  122. package/package.json +2 -2
@@ -5,6 +5,10 @@ interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions
5
5
  filterProps<T extends Partial<Props>, U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>>(props: T): [yes: Partial<Pick<T, U>>, no: Omit<T, U>];
6
6
  }
7
7
 
8
+ declare const breakpoints: readonly ["sm", "md", "lg", "xl", "xxl"];
9
+ type Breakpoint = typeof breakpoints[number];
10
+ type DisplayBreakpoint = 'xs' | Breakpoint;
11
+
8
12
  type IconValue = string | (string | [path: string, opacity: number])[] | JSXComponent;
9
13
  declare const IconValue: PropType<IconValue>;
10
14
 
@@ -120,6 +124,7 @@ declare const VSlideGroup: {
120
124
  [key: string]: any;
121
125
  }>) => void)[] | undefined;
122
126
  "onUpdate:modelValue"?: ((value: any) => any) | undefined;
127
+ mobileBreakpoint?: number | DisplayBreakpoint | undefined;
123
128
  showArrows?: string | boolean | undefined;
124
129
  "v-slot:next"?: false | ((arg: SlideGroupSlot) => vue.VNodeChild) | undefined;
125
130
  "v-slot:prev"?: false | ((arg: SlideGroupSlot) => vue.VNodeChild) | undefined;
@@ -161,6 +166,7 @@ declare const VSlideGroup: {
161
166
  class?: any;
162
167
  mandatory?: boolean | "force" | undefined;
163
168
  modelValue?: any;
169
+ mobileBreakpoint?: number | DisplayBreakpoint | undefined;
164
170
  showArrows?: string | boolean | undefined;
165
171
  } & {
166
172
  $children?: vue.VNodeChild | {
@@ -244,6 +250,7 @@ declare const VSlideGroup: {
244
250
  class?: any;
245
251
  mandatory?: boolean | "force" | undefined;
246
252
  modelValue?: any;
253
+ mobileBreakpoint?: number | DisplayBreakpoint | undefined;
247
254
  showArrows?: string | boolean | undefined;
248
255
  } & {
249
256
  $children?: vue.VNodeChild | {
@@ -287,6 +294,7 @@ declare const VSlideGroup: {
287
294
  class?: any;
288
295
  mandatory?: boolean | "force" | undefined;
289
296
  modelValue?: any;
297
+ mobileBreakpoint?: number | DisplayBreakpoint | undefined;
290
298
  showArrows?: string | boolean | undefined;
291
299
  } & {
292
300
  $children?: vue.VNodeChild | {
@@ -351,6 +359,7 @@ declare const VSlideGroup: {
351
359
  type: StringConstructor;
352
360
  default: string;
353
361
  };
362
+ mobileBreakpoint: PropType<number | DisplayBreakpoint>;
354
363
  class: PropType<any>;
355
364
  style: {
356
365
  type: PropType<vue.StyleValue>;
@@ -394,6 +403,7 @@ declare const VSlideGroup: {
394
403
  type: StringConstructor;
395
404
  default: string;
396
405
  };
406
+ mobileBreakpoint: PropType<number | DisplayBreakpoint>;
397
407
  class: PropType<any>;
398
408
  style: {
399
409
  type: PropType<vue.StyleValue>;
@@ -136,7 +136,8 @@ export const VSlider = genericComponent()({
136
136
  "position": trackStop.value,
137
137
  "elevation": props.elevation,
138
138
  "onFocus": focus,
139
- "onBlur": blur
139
+ "onBlur": blur,
140
+ "ripple": props.ripple
140
141
  }, {
141
142
  'thumb-label': slots['thumb-label']
142
143
  })]);
@@ -1 +1 @@
1
- {"version":3,"file":"VSlider.mjs","names":["VSliderThumb","VSliderTrack","makeVInputProps","VInput","VLabel","makeSliderProps","useSlider","useSteps","makeFocusProps","useFocus","useRtl","useProxiedModel","computed","ref","genericComponent","propsFactory","useRender","makeVSliderProps","modelValue","type","Number","String","default","VSlider","name","props","emits","value","v","start","end","setup","_ref","slots","emit","thumbContainerRef","rtlClasses","steps","model","undefined","roundValue","min","max","mousePressed","onSliderMousedown","onSliderTouchstart","trackContainerRef","position","hasLabels","readonly","onSliderStart","onSliderEnd","_ref2","roundedValue","onSliderMove","_ref3","getActiveThumb","$el","isFocused","focus","blur","trackStop","inputProps","_","filterProps","hasPrepend","label","prepend","_createVNode","_mergeProps","disabled","class","style","slotProps","_Fragment","id","_ref4","messagesId","elevation"],"sources":["../../../src/components/VSlider/VSlider.tsx"],"sourcesContent":["// Styles\nimport './VSlider.sass'\n\n// Components\nimport { VSliderThumb } from './VSliderThumb'\nimport { VSliderTrack } from './VSliderTrack'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VLabel } from '@/components/VLabel'\n\n// Composables\nimport { makeSliderProps, useSlider, useSteps } from './slider'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VSliderThumbSlots } from './VSliderThumb'\nimport type { VSliderTrackSlots } from './VSliderTrack'\nimport type { VInputSlot, VInputSlots } from '@/components/VInput/VInput'\n\nexport type VSliderSlots = VInputSlots & VSliderThumbSlots & VSliderTrackSlots & {\n label: VInputSlot\n}\n\nexport const makeVSliderProps = propsFactory({\n ...makeFocusProps(),\n ...makeSliderProps(),\n ...makeVInputProps(),\n\n modelValue: {\n type: [Number, String],\n default: 0,\n },\n}, 'VSlider')\n\nexport const VSlider = genericComponent<VSliderSlots>()({\n name: 'VSlider',\n\n props: makeVSliderProps(),\n\n emits: {\n 'update:focused': (value: boolean) => true,\n 'update:modelValue': (v: number) => true,\n start: (value: number) => true,\n end: (value: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const thumbContainerRef = ref()\n const { rtlClasses } = useRtl()\n\n const steps = useSteps(props)\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n value => {\n return steps.roundValue(value == null ? steps.min.value : value)\n },\n )\n\n const {\n min,\n max,\n mousePressed,\n roundValue,\n onSliderMousedown,\n onSliderTouchstart,\n trackContainerRef,\n position,\n hasLabels,\n readonly,\n } = useSlider({\n props,\n steps,\n onSliderStart: () => {\n emit('start', model.value)\n },\n onSliderEnd: ({ value }) => {\n const roundedValue = roundValue(value)\n model.value = roundedValue\n emit('end', roundedValue)\n },\n onSliderMove: ({ value }) => model.value = roundValue(value),\n getActiveThumb: () => thumbContainerRef.value?.$el,\n })\n\n const { isFocused, focus, blur } = useFocus(props)\n const trackStop = computed(() => position(model.value))\n\n useRender(() => {\n const [inputProps, _] = VInput.filterProps(props)\n const hasPrepend = !!(props.label || slots.label || slots.prepend)\n\n return (\n <VInput\n class={[\n 'v-slider',\n {\n 'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,\n 'v-slider--focused': isFocused.value,\n 'v-slider--pressed': mousePressed.value,\n 'v-slider--disabled': props.disabled,\n },\n rtlClasses.value,\n props.class,\n ]}\n style={ props.style }\n { ...inputProps }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n prepend: hasPrepend ? slotProps => (\n <>\n { slots.label?.(slotProps) ?? props.label\n ? (\n <VLabel\n id={ slotProps.id.value }\n class=\"v-slider__label\"\n text={ props.label }\n />\n ) : undefined\n }\n\n { slots.prepend?.(slotProps) }\n </>\n ) : undefined,\n default: ({ id, messagesId }) => (\n <div\n class=\"v-slider__container\"\n onMousedown={ !readonly.value ? onSliderMousedown : undefined }\n onTouchstartPassive={ !readonly.value ? onSliderTouchstart : undefined }\n >\n <input\n id={ id.value }\n name={ props.name || id.value }\n disabled={ !!props.disabled }\n readonly={ !!props.readonly }\n tabindex=\"-1\"\n value={ model.value }\n />\n\n <VSliderTrack\n ref={ trackContainerRef }\n start={ 0 }\n stop={ trackStop.value }\n >\n {{ 'tick-label': slots['tick-label'] }}\n </VSliderTrack>\n\n <VSliderThumb\n ref={ thumbContainerRef }\n aria-describedby={ messagesId.value }\n focused={ isFocused.value }\n min={ min.value }\n max={ max.value }\n modelValue={ model.value }\n onUpdate:modelValue={ v => (model.value = v) }\n position={ trackStop.value }\n elevation={ props.elevation }\n onFocus={ focus }\n onBlur={ blur }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n </div>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n\nexport type VSlider = InstanceType<typeof VSlider>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VSlider.mjs","names":["VSliderThumb","VSliderTrack","makeVInputProps","VInput","VLabel","makeSliderProps","useSlider","useSteps","makeFocusProps","useFocus","useRtl","useProxiedModel","computed","ref","genericComponent","propsFactory","useRender","makeVSliderProps","modelValue","type","Number","String","default","VSlider","name","props","emits","value","v","start","end","setup","_ref","slots","emit","thumbContainerRef","rtlClasses","steps","model","undefined","roundValue","min","max","mousePressed","onSliderMousedown","onSliderTouchstart","trackContainerRef","position","hasLabels","readonly","onSliderStart","onSliderEnd","_ref2","roundedValue","onSliderMove","_ref3","getActiveThumb","$el","isFocused","focus","blur","trackStop","inputProps","_","filterProps","hasPrepend","label","prepend","_createVNode","_mergeProps","disabled","class","style","slotProps","_Fragment","id","_ref4","messagesId","elevation","ripple"],"sources":["../../../src/components/VSlider/VSlider.tsx"],"sourcesContent":["// Styles\nimport './VSlider.sass'\n\n// Components\nimport { VSliderThumb } from './VSliderThumb'\nimport { VSliderTrack } from './VSliderTrack'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VLabel } from '@/components/VLabel'\n\n// Composables\nimport { makeSliderProps, useSlider, useSteps } from './slider'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VSliderThumbSlots } from './VSliderThumb'\nimport type { VSliderTrackSlots } from './VSliderTrack'\nimport type { VInputSlot, VInputSlots } from '@/components/VInput/VInput'\n\nexport type VSliderSlots = VInputSlots & VSliderThumbSlots & VSliderTrackSlots & {\n label: VInputSlot\n}\n\nexport const makeVSliderProps = propsFactory({\n ...makeFocusProps(),\n ...makeSliderProps(),\n ...makeVInputProps(),\n\n modelValue: {\n type: [Number, String],\n default: 0,\n },\n}, 'VSlider')\n\nexport const VSlider = genericComponent<VSliderSlots>()({\n name: 'VSlider',\n\n props: makeVSliderProps(),\n\n emits: {\n 'update:focused': (value: boolean) => true,\n 'update:modelValue': (v: number) => true,\n start: (value: number) => true,\n end: (value: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const thumbContainerRef = ref()\n const { rtlClasses } = useRtl()\n\n const steps = useSteps(props)\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n value => {\n return steps.roundValue(value == null ? steps.min.value : value)\n },\n )\n\n const {\n min,\n max,\n mousePressed,\n roundValue,\n onSliderMousedown,\n onSliderTouchstart,\n trackContainerRef,\n position,\n hasLabels,\n readonly,\n } = useSlider({\n props,\n steps,\n onSliderStart: () => {\n emit('start', model.value)\n },\n onSliderEnd: ({ value }) => {\n const roundedValue = roundValue(value)\n model.value = roundedValue\n emit('end', roundedValue)\n },\n onSliderMove: ({ value }) => model.value = roundValue(value),\n getActiveThumb: () => thumbContainerRef.value?.$el,\n })\n\n const { isFocused, focus, blur } = useFocus(props)\n const trackStop = computed(() => position(model.value))\n\n useRender(() => {\n const [inputProps, _] = VInput.filterProps(props)\n const hasPrepend = !!(props.label || slots.label || slots.prepend)\n\n return (\n <VInput\n class={[\n 'v-slider',\n {\n 'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,\n 'v-slider--focused': isFocused.value,\n 'v-slider--pressed': mousePressed.value,\n 'v-slider--disabled': props.disabled,\n },\n rtlClasses.value,\n props.class,\n ]}\n style={ props.style }\n { ...inputProps }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n prepend: hasPrepend ? slotProps => (\n <>\n { slots.label?.(slotProps) ?? props.label\n ? (\n <VLabel\n id={ slotProps.id.value }\n class=\"v-slider__label\"\n text={ props.label }\n />\n ) : undefined\n }\n\n { slots.prepend?.(slotProps) }\n </>\n ) : undefined,\n default: ({ id, messagesId }) => (\n <div\n class=\"v-slider__container\"\n onMousedown={ !readonly.value ? onSliderMousedown : undefined }\n onTouchstartPassive={ !readonly.value ? onSliderTouchstart : undefined }\n >\n <input\n id={ id.value }\n name={ props.name || id.value }\n disabled={ !!props.disabled }\n readonly={ !!props.readonly }\n tabindex=\"-1\"\n value={ model.value }\n />\n\n <VSliderTrack\n ref={ trackContainerRef }\n start={ 0 }\n stop={ trackStop.value }\n >\n {{ 'tick-label': slots['tick-label'] }}\n </VSliderTrack>\n\n <VSliderThumb\n ref={ thumbContainerRef }\n aria-describedby={ messagesId.value }\n focused={ isFocused.value }\n min={ min.value }\n max={ max.value }\n modelValue={ model.value }\n onUpdate:modelValue={ v => (model.value = v) }\n position={ trackStop.value }\n elevation={ props.elevation }\n onFocus={ focus }\n onBlur={ blur }\n ripple={ props.ripple }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n </div>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n\nexport type VSlider = InstanceType<typeof VSlider>\n"],"mappings":"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"}
@@ -59,6 +59,7 @@ declare const VSlider: {
59
59
  rounded?: string | number | boolean | undefined;
60
60
  density?: Density | undefined;
61
61
  modelValue?: string | number | undefined;
62
+ ripple?: boolean | undefined;
62
63
  focused?: boolean | undefined;
63
64
  errorMessages?: string | readonly string[] | undefined;
64
65
  maxErrors?: string | number | undefined;
@@ -232,6 +233,7 @@ declare const VSlider: {
232
233
  messages: string | readonly string[];
233
234
  density: Density;
234
235
  modelValue: string | number;
236
+ ripple: boolean;
235
237
  focused: boolean;
236
238
  errorMessages: string | readonly string[];
237
239
  maxErrors: string | number;
@@ -333,6 +335,7 @@ declare const VSlider: {
333
335
  rounded: string | number | boolean;
334
336
  density: Density;
335
337
  modelValue: string | number;
338
+ ripple: boolean;
336
339
  focused: boolean;
337
340
  errorMessages: string | readonly string[];
338
341
  maxErrors: string | number;
@@ -408,6 +411,7 @@ declare const VSlider: {
408
411
  messages: string | readonly string[];
409
412
  density: Density;
410
413
  modelValue: string | number;
414
+ ripple: boolean;
411
415
  focused: boolean;
412
416
  errorMessages: string | readonly string[];
413
417
  maxErrors: string | number;
@@ -507,6 +511,7 @@ declare const VSlider: {
507
511
  messages: string | readonly string[];
508
512
  density: Density;
509
513
  modelValue: string | number;
514
+ ripple: boolean;
510
515
  focused: boolean;
511
516
  errorMessages: string | readonly string[];
512
517
  maxErrors: string | number;
@@ -608,6 +613,7 @@ declare const VSlider: {
608
613
  rounded: string | number | boolean;
609
614
  density: Density;
610
615
  modelValue: string | number;
616
+ ripple: boolean;
611
617
  focused: boolean;
612
618
  errorMessages: string | readonly string[];
613
619
  maxErrors: string | number;
@@ -712,6 +718,10 @@ declare const VSlider: {
712
718
  };
713
719
  'onClick:prepend': vue.PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
714
720
  'onClick:append': vue.PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
721
+ ripple: {
722
+ type: BooleanConstructor;
723
+ default: boolean;
724
+ };
715
725
  elevation: Omit<{
716
726
  type: (StringConstructor | NumberConstructor)[];
717
727
  validator(v: any): boolean;
@@ -828,6 +838,10 @@ declare const VSlider: {
828
838
  };
829
839
  'onClick:prepend': vue.PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
830
840
  'onClick:append': vue.PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
841
+ ripple: {
842
+ type: BooleanConstructor;
843
+ default: boolean;
844
+ };
831
845
  elevation: Omit<{
832
846
  type: (StringConstructor | NumberConstructor)[];
833
847
  validator(v: any): boolean;
@@ -75,7 +75,11 @@ export const makeSliderProps = propsFactory({
75
75
  ...makeRoundedProps(),
76
76
  ...makeElevationProps({
77
77
  elevation: 2
78
- })
78
+ }),
79
+ ripple: {
80
+ type: Boolean,
81
+ default: true
82
+ }
79
83
  }, 'Slider');
80
84
  export const useSteps = props => {
81
85
  const min = computed(() => parseFloat(props.min));
@@ -1 +1 @@
1
- {"version":3,"file":"slider.mjs","names":["makeElevationProps","useRtl","makeRoundedProps","computed","provide","ref","shallowRef","toRef","clamp","createRange","getDecimals","propsFactory","VSliderSymbol","Symbol","for","getOffset","e","el","direction","vertical","rect","getBoundingClientRect","touch","touches","clientY","top","height","clientX","left","width","getPosition","position","length","changedTouches","makeSliderProps","disabled","type","Boolean","default","error","readonly","max","Number","String","min","step","thumbColor","thumbLabel","undefined","validator","v","thumbSize","showTicks","ticks","Array","Object","tickSize","color","trackColor","trackFillColor","trackSize","includes","reverse","elevation","useSteps","props","parseFloat","decimals","Math","value","roundValue","clamped","offset","newValue","round","toFixed","useSlider","_ref","steps","onSliderStart","onSliderMove","onSliderEnd","getActiveThumb","isRtl","isReversed","horizontalDirection","hd","parseInt","numTicks","mousePressed","startOffset","trackContainerRef","activeThumbRef","parseMouseMove","start","trackStart","trackLength","$el","clickOffset","clickPos","handleStop","handleStart","focus","contains","target","moveListenerOptions","passive","capture","onMouseMove","onSliderMouseUp","stopPropagation","preventDefault","window","removeEventListener","onSliderTouchend","onSliderTouchstart","addEventListener","onSliderMousedown","val","percentage","isNaN","parsedTicks","Infinity","map","t","isArray","label","toString","keys","key","hasLabels","some","_ref2","data","rounded"],"sources":["../../../src/components/VSlider/slider.ts"],"sourcesContent":["/* eslint-disable max-statements */\n// Composables\nimport { makeElevationProps } from '@/composables/elevation'\nimport { useRtl } from '@/composables/locale'\nimport { makeRoundedProps } from '@/composables/rounded'\n\n// Utilities\nimport { computed, provide, ref, shallowRef, toRef } from 'vue'\nimport { clamp, createRange, getDecimals, propsFactory } from '@/util'\n\n// Types\nimport type { ExtractPropTypes, InjectionKey, PropType, Ref } from 'vue'\nimport type { VSliderTrack } from './VSliderTrack'\n\nexport type Tick = {\n value: number\n position: number\n label?: string\n}\n\ntype SliderProvide = {\n activeThumbRef: Ref<HTMLElement | undefined>\n color: Ref<string | undefined>\n decimals: Ref<number>\n direction: Ref<'vertical' | 'horizontal'>\n disabled: Ref<boolean | null | undefined>\n elevation: Ref<number | string | undefined>\n min: Ref<number>\n max: Ref<number>\n mousePressed: Ref<boolean>\n numTicks: Ref<number>\n onSliderMousedown: (e: MouseEvent) => void\n onSliderTouchstart: (e: TouchEvent) => void\n parseMouseMove: (e: MouseEvent | TouchEvent) => number\n position: (val: number) => number\n readonly: Ref<boolean | null | undefined>\n rounded: Ref<boolean | number | string | undefined>\n roundValue: (value: number) => number\n thumbLabel: Ref<boolean | string | undefined>\n showTicks: Ref<boolean | 'always'>\n startOffset: Ref<number>\n step: Ref<number>\n thumbSize: Ref<number>\n thumbColor: Ref<string | undefined>\n trackColor: Ref<string | undefined>\n trackFillColor: Ref<string | undefined>\n trackSize: Ref<number>\n ticks: Ref<readonly number[] | Record<string, string> | undefined>\n tickSize: Ref<number>\n trackContainerRef: Ref<VSliderTrack | undefined>\n vertical: Ref<boolean>\n parsedTicks: Ref<Tick[]>\n hasLabels: Ref<boolean>\n isReversed: Ref<boolean>\n horizontalDirection: Ref<'ltr' | 'rtl'>\n}\n\nexport const VSliderSymbol: InjectionKey<SliderProvide> = Symbol.for('vuetify:v-slider')\n\nexport function getOffset (e: MouseEvent | TouchEvent, el: HTMLElement, direction: string) {\n const vertical = direction === 'vertical'\n const rect = el.getBoundingClientRect()\n const touch = 'touches' in e ? e.touches[0] : e\n return vertical\n ? touch.clientY - (rect.top + rect.height / 2)\n : touch.clientX - (rect.left + rect.width / 2)\n}\n\nfunction getPosition (e: MouseEvent | TouchEvent, position: 'clientX' | 'clientY'): number {\n if ('touches' in e && e.touches.length) return e.touches[0][position]\n else if ('changedTouches' in e && e.changedTouches.length) return e.changedTouches[0][position]\n else return (e as MouseEvent)[position]\n}\n\nexport const makeSliderProps = propsFactory({\n disabled: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n error: Boolean,\n readonly: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n max: {\n type: [Number, String],\n default: 100,\n },\n min: {\n type: [Number, String],\n default: 0,\n },\n step: {\n type: [Number, String],\n default: 0,\n },\n thumbColor: String,\n thumbLabel: {\n type: [Boolean, String] as PropType<boolean | 'always' | undefined>,\n default: undefined,\n validator: (v: any) => typeof v === 'boolean' || v === 'always',\n },\n thumbSize: {\n type: [Number, String],\n default: 20,\n },\n showTicks: {\n type: [Boolean, String] as PropType<boolean | 'always'>,\n default: false,\n validator: (v: any) => typeof v === 'boolean' || v === 'always',\n },\n ticks: {\n type: [Array, Object] as PropType<readonly number[] | Record<number, string>>,\n },\n tickSize: {\n type: [Number, String],\n default: 2,\n },\n color: String,\n trackColor: String,\n trackFillColor: String,\n trackSize: {\n type: [Number, String],\n default: 4,\n },\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n validator: (v: any) => ['vertical', 'horizontal'].includes(v),\n },\n reverse: Boolean,\n\n ...makeRoundedProps(),\n ...makeElevationProps({\n elevation: 2,\n }),\n}, 'Slider')\n\ntype SliderProps = ExtractPropTypes<ReturnType<typeof makeSliderProps>>\n\ntype SliderData = {\n value: number\n}\n\nexport const useSteps = (props: SliderProps) => {\n const min = computed(() => parseFloat(props.min))\n const max = computed(() => parseFloat(props.max))\n const step = computed(() => +props.step > 0 ? parseFloat(props.step) : 0)\n const decimals = computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)))\n\n function roundValue (value: string | number) {\n value = parseFloat(value)\n\n if (step.value <= 0) return value\n\n const clamped = clamp(value, min.value, max.value)\n const offset = min.value % step.value\n const newValue = Math.round((clamped - offset) / step.value) * step.value + offset\n\n return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value))\n }\n\n return { min, max, step, decimals, roundValue }\n}\n\nexport const useSlider = ({\n props,\n steps,\n onSliderStart,\n onSliderMove,\n onSliderEnd,\n getActiveThumb,\n}: {\n props: SliderProps\n steps: ReturnType<typeof useSteps>\n onSliderEnd: (data: SliderData) => void\n onSliderStart: (data: SliderData) => void\n onSliderMove: (data: SliderData) => void\n getActiveThumb: (e: MouseEvent | TouchEvent) => HTMLElement\n}) => {\n const { isRtl } = useRtl()\n const isReversed = toRef(props, 'reverse')\n const horizontalDirection = computed(() => {\n let hd: 'ltr' | 'rtl' = isRtl.value ? 'rtl' : 'ltr'\n\n if (props.reverse) {\n hd = hd === 'rtl' ? 'ltr' : 'rtl'\n }\n\n return hd\n })\n\n const { min, max, step, decimals, roundValue } = steps\n\n const thumbSize = computed(() => parseInt(props.thumbSize, 10))\n const tickSize = computed(() => parseInt(props.tickSize, 10))\n const trackSize = computed(() => parseInt(props.trackSize, 10))\n const numTicks = computed(() => (max.value - min.value) / step.value)\n const disabled = toRef(props, 'disabled')\n const vertical = computed(() => props.direction === 'vertical')\n\n const thumbColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color)\n const trackColor = computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color)\n const trackFillColor = computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color)\n\n const mousePressed = shallowRef(false)\n\n const startOffset = shallowRef(0)\n const trackContainerRef = ref<VSliderTrack | undefined>()\n const activeThumbRef = ref<HTMLElement | undefined>()\n\n function parseMouseMove (e: MouseEvent | TouchEvent): number {\n const vertical = props.direction === 'vertical'\n const start = vertical ? 'top' : 'left'\n const length = vertical ? 'height' : 'width'\n const position = vertical ? 'clientY' : 'clientX'\n\n const {\n [start]: trackStart,\n [length]: trackLength,\n } = trackContainerRef.value?.$el.getBoundingClientRect()\n const clickOffset = getPosition(e, position)\n\n // It is possible for left to be NaN, force to number\n let clickPos = Math.min(Math.max((clickOffset - trackStart - startOffset.value) / trackLength, 0), 1) || 0\n\n if (vertical || horizontalDirection.value === 'rtl') clickPos = 1 - clickPos\n\n return roundValue(min.value + clickPos * (max.value - min.value))\n }\n\n const handleStop = (e: MouseEvent | TouchEvent) => {\n onSliderEnd({ value: parseMouseMove(e) })\n\n mousePressed.value = false\n startOffset.value = 0\n }\n\n const handleStart = (e: MouseEvent | TouchEvent) => {\n activeThumbRef.value = getActiveThumb(e)\n\n if (!activeThumbRef.value) return\n\n activeThumbRef.value.focus()\n mousePressed.value = true\n\n if (activeThumbRef.value.contains(e.target as Node)) {\n startOffset.value = getOffset(e, activeThumbRef.value, props.direction)\n } else {\n startOffset.value = 0\n onSliderMove({ value: parseMouseMove(e) })\n }\n\n onSliderStart({ value: parseMouseMove(e) })\n }\n\n const moveListenerOptions = { passive: true, capture: true }\n\n function onMouseMove (e: MouseEvent | TouchEvent) {\n onSliderMove({ value: parseMouseMove(e) })\n }\n\n function onSliderMouseUp (e: MouseEvent) {\n e.stopPropagation()\n e.preventDefault()\n\n handleStop(e)\n\n window.removeEventListener('mousemove', onMouseMove, moveListenerOptions)\n window.removeEventListener('mouseup', onSliderMouseUp)\n }\n\n function onSliderTouchend (e: TouchEvent) {\n handleStop(e)\n\n window.removeEventListener('touchmove', onMouseMove, moveListenerOptions)\n e.target?.removeEventListener('touchend', onSliderTouchend as EventListener)\n }\n\n function onSliderTouchstart (e: TouchEvent) {\n handleStart(e)\n\n window.addEventListener('touchmove', onMouseMove, moveListenerOptions)\n e.target?.addEventListener('touchend', onSliderTouchend as EventListener, { passive: false })\n }\n\n function onSliderMousedown (e: MouseEvent) {\n e.preventDefault()\n\n handleStart(e)\n\n window.addEventListener('mousemove', onMouseMove, moveListenerOptions)\n window.addEventListener('mouseup', onSliderMouseUp, { passive: false })\n }\n\n const position = (val: number) => {\n const percentage = (val - min.value) / (max.value - min.value) * 100\n return clamp(isNaN(percentage) ? 0 : percentage, 0, 100)\n }\n\n const showTicks = toRef(props, 'showTicks')\n const parsedTicks = computed<Tick[]>(() => {\n if (!showTicks.value) return []\n\n if (!props.ticks) {\n return numTicks.value !== Infinity ? createRange(numTicks.value + 1).map(t => {\n const value = min.value + (t * step.value)\n return {\n value,\n position: position(value),\n }\n }) : []\n }\n if (Array.isArray(props.ticks)) return props.ticks.map(t => ({ value: t, position: position(t), label: t.toString() }))\n return Object.keys(props.ticks).map(key => ({\n value: parseFloat(key),\n position: position(parseFloat(key)),\n label: (props.ticks as Record<string, string>)[key],\n }))\n })\n\n const hasLabels = computed(() => parsedTicks.value.some(({ label }) => !!label))\n\n const data: SliderProvide = {\n activeThumbRef,\n color: toRef(props, 'color'),\n decimals,\n disabled,\n direction: toRef(props, 'direction'),\n elevation: toRef(props, 'elevation'),\n hasLabels,\n horizontalDirection,\n isReversed,\n min,\n max,\n mousePressed,\n numTicks,\n onSliderMousedown,\n onSliderTouchstart,\n parsedTicks,\n parseMouseMove,\n position,\n readonly: toRef(props, 'readonly'),\n rounded: toRef(props, 'rounded'),\n roundValue,\n showTicks,\n startOffset,\n step,\n thumbSize,\n thumbColor,\n thumbLabel: toRef(props, 'thumbLabel'),\n ticks: toRef(props, 'ticks'),\n tickSize,\n trackColor,\n trackContainerRef,\n trackFillColor,\n trackSize,\n vertical,\n }\n\n provide(VSliderSymbol, data)\n\n return data\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"slider.mjs","names":["makeElevationProps","useRtl","makeRoundedProps","computed","provide","ref","shallowRef","toRef","clamp","createRange","getDecimals","propsFactory","VSliderSymbol","Symbol","for","getOffset","e","el","direction","vertical","rect","getBoundingClientRect","touch","touches","clientY","top","height","clientX","left","width","getPosition","position","length","changedTouches","makeSliderProps","disabled","type","Boolean","default","error","readonly","max","Number","String","min","step","thumbColor","thumbLabel","undefined","validator","v","thumbSize","showTicks","ticks","Array","Object","tickSize","color","trackColor","trackFillColor","trackSize","includes","reverse","elevation","ripple","useSteps","props","parseFloat","decimals","Math","value","roundValue","clamped","offset","newValue","round","toFixed","useSlider","_ref","steps","onSliderStart","onSliderMove","onSliderEnd","getActiveThumb","isRtl","isReversed","horizontalDirection","hd","parseInt","numTicks","mousePressed","startOffset","trackContainerRef","activeThumbRef","parseMouseMove","start","trackStart","trackLength","$el","clickOffset","clickPos","handleStop","handleStart","focus","contains","target","moveListenerOptions","passive","capture","onMouseMove","onSliderMouseUp","stopPropagation","preventDefault","window","removeEventListener","onSliderTouchend","onSliderTouchstart","addEventListener","onSliderMousedown","val","percentage","isNaN","parsedTicks","Infinity","map","t","isArray","label","toString","keys","key","hasLabels","some","_ref2","data","rounded"],"sources":["../../../src/components/VSlider/slider.ts"],"sourcesContent":["/* eslint-disable max-statements */\n// Composables\nimport { makeElevationProps } from '@/composables/elevation'\nimport { useRtl } from '@/composables/locale'\nimport { makeRoundedProps } from '@/composables/rounded'\n\n// Utilities\nimport { computed, provide, ref, shallowRef, toRef } from 'vue'\nimport { clamp, createRange, getDecimals, propsFactory } from '@/util'\n\n// Types\nimport type { ExtractPropTypes, InjectionKey, PropType, Ref } from 'vue'\nimport type { VSliderTrack } from './VSliderTrack'\n\nexport type Tick = {\n value: number\n position: number\n label?: string\n}\n\ntype SliderProvide = {\n activeThumbRef: Ref<HTMLElement | undefined>\n color: Ref<string | undefined>\n decimals: Ref<number>\n direction: Ref<'vertical' | 'horizontal'>\n disabled: Ref<boolean | null | undefined>\n elevation: Ref<number | string | undefined>\n min: Ref<number>\n max: Ref<number>\n mousePressed: Ref<boolean>\n numTicks: Ref<number>\n onSliderMousedown: (e: MouseEvent) => void\n onSliderTouchstart: (e: TouchEvent) => void\n parseMouseMove: (e: MouseEvent | TouchEvent) => number\n position: (val: number) => number\n readonly: Ref<boolean | null | undefined>\n rounded: Ref<boolean | number | string | undefined>\n roundValue: (value: number) => number\n thumbLabel: Ref<boolean | string | undefined>\n showTicks: Ref<boolean | 'always'>\n startOffset: Ref<number>\n step: Ref<number>\n thumbSize: Ref<number>\n thumbColor: Ref<string | undefined>\n trackColor: Ref<string | undefined>\n trackFillColor: Ref<string | undefined>\n trackSize: Ref<number>\n ticks: Ref<readonly number[] | Record<string, string> | undefined>\n tickSize: Ref<number>\n trackContainerRef: Ref<VSliderTrack | undefined>\n vertical: Ref<boolean>\n parsedTicks: Ref<Tick[]>\n hasLabels: Ref<boolean>\n isReversed: Ref<boolean>\n horizontalDirection: Ref<'ltr' | 'rtl'>\n}\n\nexport const VSliderSymbol: InjectionKey<SliderProvide> = Symbol.for('vuetify:v-slider')\n\nexport function getOffset (e: MouseEvent | TouchEvent, el: HTMLElement, direction: string) {\n const vertical = direction === 'vertical'\n const rect = el.getBoundingClientRect()\n const touch = 'touches' in e ? e.touches[0] : e\n return vertical\n ? touch.clientY - (rect.top + rect.height / 2)\n : touch.clientX - (rect.left + rect.width / 2)\n}\n\nfunction getPosition (e: MouseEvent | TouchEvent, position: 'clientX' | 'clientY'): number {\n if ('touches' in e && e.touches.length) return e.touches[0][position]\n else if ('changedTouches' in e && e.changedTouches.length) return e.changedTouches[0][position]\n else return (e as MouseEvent)[position]\n}\n\nexport const makeSliderProps = propsFactory({\n disabled: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n error: Boolean,\n readonly: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n max: {\n type: [Number, String],\n default: 100,\n },\n min: {\n type: [Number, String],\n default: 0,\n },\n step: {\n type: [Number, String],\n default: 0,\n },\n thumbColor: String,\n thumbLabel: {\n type: [Boolean, String] as PropType<boolean | 'always' | undefined>,\n default: undefined,\n validator: (v: any) => typeof v === 'boolean' || v === 'always',\n },\n thumbSize: {\n type: [Number, String],\n default: 20,\n },\n showTicks: {\n type: [Boolean, String] as PropType<boolean | 'always'>,\n default: false,\n validator: (v: any) => typeof v === 'boolean' || v === 'always',\n },\n ticks: {\n type: [Array, Object] as PropType<readonly number[] | Record<number, string>>,\n },\n tickSize: {\n type: [Number, String],\n default: 2,\n },\n color: String,\n trackColor: String,\n trackFillColor: String,\n trackSize: {\n type: [Number, String],\n default: 4,\n },\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n validator: (v: any) => ['vertical', 'horizontal'].includes(v),\n },\n reverse: Boolean,\n\n ...makeRoundedProps(),\n ...makeElevationProps({\n elevation: 2,\n }),\n ripple: {\n type: Boolean,\n default: true,\n },\n}, 'Slider')\n\ntype SliderProps = ExtractPropTypes<ReturnType<typeof makeSliderProps>>\n\ntype SliderData = {\n value: number\n}\n\nexport const useSteps = (props: SliderProps) => {\n const min = computed(() => parseFloat(props.min))\n const max = computed(() => parseFloat(props.max))\n const step = computed(() => +props.step > 0 ? parseFloat(props.step) : 0)\n const decimals = computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)))\n\n function roundValue (value: string | number) {\n value = parseFloat(value)\n\n if (step.value <= 0) return value\n\n const clamped = clamp(value, min.value, max.value)\n const offset = min.value % step.value\n const newValue = Math.round((clamped - offset) / step.value) * step.value + offset\n\n return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value))\n }\n\n return { min, max, step, decimals, roundValue }\n}\n\nexport const useSlider = ({\n props,\n steps,\n onSliderStart,\n onSliderMove,\n onSliderEnd,\n getActiveThumb,\n}: {\n props: SliderProps\n steps: ReturnType<typeof useSteps>\n onSliderEnd: (data: SliderData) => void\n onSliderStart: (data: SliderData) => void\n onSliderMove: (data: SliderData) => void\n getActiveThumb: (e: MouseEvent | TouchEvent) => HTMLElement\n}) => {\n const { isRtl } = useRtl()\n const isReversed = toRef(props, 'reverse')\n const horizontalDirection = computed(() => {\n let hd: 'ltr' | 'rtl' = isRtl.value ? 'rtl' : 'ltr'\n\n if (props.reverse) {\n hd = hd === 'rtl' ? 'ltr' : 'rtl'\n }\n\n return hd\n })\n\n const { min, max, step, decimals, roundValue } = steps\n\n const thumbSize = computed(() => parseInt(props.thumbSize, 10))\n const tickSize = computed(() => parseInt(props.tickSize, 10))\n const trackSize = computed(() => parseInt(props.trackSize, 10))\n const numTicks = computed(() => (max.value - min.value) / step.value)\n const disabled = toRef(props, 'disabled')\n const vertical = computed(() => props.direction === 'vertical')\n\n const thumbColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color)\n const trackColor = computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color)\n const trackFillColor = computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color)\n\n const mousePressed = shallowRef(false)\n\n const startOffset = shallowRef(0)\n const trackContainerRef = ref<VSliderTrack | undefined>()\n const activeThumbRef = ref<HTMLElement | undefined>()\n\n function parseMouseMove (e: MouseEvent | TouchEvent): number {\n const vertical = props.direction === 'vertical'\n const start = vertical ? 'top' : 'left'\n const length = vertical ? 'height' : 'width'\n const position = vertical ? 'clientY' : 'clientX'\n\n const {\n [start]: trackStart,\n [length]: trackLength,\n } = trackContainerRef.value?.$el.getBoundingClientRect()\n const clickOffset = getPosition(e, position)\n\n // It is possible for left to be NaN, force to number\n let clickPos = Math.min(Math.max((clickOffset - trackStart - startOffset.value) / trackLength, 0), 1) || 0\n\n if (vertical || horizontalDirection.value === 'rtl') clickPos = 1 - clickPos\n\n return roundValue(min.value + clickPos * (max.value - min.value))\n }\n\n const handleStop = (e: MouseEvent | TouchEvent) => {\n onSliderEnd({ value: parseMouseMove(e) })\n\n mousePressed.value = false\n startOffset.value = 0\n }\n\n const handleStart = (e: MouseEvent | TouchEvent) => {\n activeThumbRef.value = getActiveThumb(e)\n\n if (!activeThumbRef.value) return\n\n activeThumbRef.value.focus()\n mousePressed.value = true\n\n if (activeThumbRef.value.contains(e.target as Node)) {\n startOffset.value = getOffset(e, activeThumbRef.value, props.direction)\n } else {\n startOffset.value = 0\n onSliderMove({ value: parseMouseMove(e) })\n }\n\n onSliderStart({ value: parseMouseMove(e) })\n }\n\n const moveListenerOptions = { passive: true, capture: true }\n\n function onMouseMove (e: MouseEvent | TouchEvent) {\n onSliderMove({ value: parseMouseMove(e) })\n }\n\n function onSliderMouseUp (e: MouseEvent) {\n e.stopPropagation()\n e.preventDefault()\n\n handleStop(e)\n\n window.removeEventListener('mousemove', onMouseMove, moveListenerOptions)\n window.removeEventListener('mouseup', onSliderMouseUp)\n }\n\n function onSliderTouchend (e: TouchEvent) {\n handleStop(e)\n\n window.removeEventListener('touchmove', onMouseMove, moveListenerOptions)\n e.target?.removeEventListener('touchend', onSliderTouchend as EventListener)\n }\n\n function onSliderTouchstart (e: TouchEvent) {\n handleStart(e)\n\n window.addEventListener('touchmove', onMouseMove, moveListenerOptions)\n e.target?.addEventListener('touchend', onSliderTouchend as EventListener, { passive: false })\n }\n\n function onSliderMousedown (e: MouseEvent) {\n e.preventDefault()\n\n handleStart(e)\n\n window.addEventListener('mousemove', onMouseMove, moveListenerOptions)\n window.addEventListener('mouseup', onSliderMouseUp, { passive: false })\n }\n\n const position = (val: number) => {\n const percentage = (val - min.value) / (max.value - min.value) * 100\n return clamp(isNaN(percentage) ? 0 : percentage, 0, 100)\n }\n\n const showTicks = toRef(props, 'showTicks')\n const parsedTicks = computed<Tick[]>(() => {\n if (!showTicks.value) return []\n\n if (!props.ticks) {\n return numTicks.value !== Infinity ? createRange(numTicks.value + 1).map(t => {\n const value = min.value + (t * step.value)\n return {\n value,\n position: position(value),\n }\n }) : []\n }\n if (Array.isArray(props.ticks)) return props.ticks.map(t => ({ value: t, position: position(t), label: t.toString() }))\n return Object.keys(props.ticks).map(key => ({\n value: parseFloat(key),\n position: position(parseFloat(key)),\n label: (props.ticks as Record<string, string>)[key],\n }))\n })\n\n const hasLabels = computed(() => parsedTicks.value.some(({ label }) => !!label))\n\n const data: SliderProvide = {\n activeThumbRef,\n color: toRef(props, 'color'),\n decimals,\n disabled,\n direction: toRef(props, 'direction'),\n elevation: toRef(props, 'elevation'),\n hasLabels,\n horizontalDirection,\n isReversed,\n min,\n max,\n mousePressed,\n numTicks,\n onSliderMousedown,\n onSliderTouchstart,\n parsedTicks,\n parseMouseMove,\n position,\n readonly: toRef(props, 'readonly'),\n rounded: toRef(props, 'rounded'),\n roundValue,\n showTicks,\n startOffset,\n step,\n thumbSize,\n thumbColor,\n thumbLabel: toRef(props, 'thumbLabel'),\n ticks: toRef(props, 'ticks'),\n tickSize,\n trackColor,\n trackContainerRef,\n trackFillColor,\n trackSize,\n vertical,\n }\n\n provide(VSliderSymbol, data)\n\n return data\n}\n"],"mappings":"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"}
@@ -13,6 +13,7 @@
13
13
  max-width: 672px;
14
14
  min-height: 48px;
15
15
  min-width: 344px;
16
+ overflow: hidden;
16
17
  padding: 0;
17
18
  border-radius: 4px;
18
19
  }
@@ -77,6 +78,14 @@
77
78
  padding: 0 8px;
78
79
  min-width: auto;
79
80
  }
81
+ .v-snackbar__timer {
82
+ width: 100%;
83
+ position: absolute;
84
+ top: 0;
85
+ }
86
+ .v-snackbar__timer .v-progress-linear {
87
+ transition: 0.2s linear;
88
+ }
80
89
  .v-snackbar--absolute {
81
90
  position: absolute;
82
91
  z-index: 1;
@@ -5,7 +5,8 @@ import "./VSnackbar.css";
5
5
  // Components
6
6
  import { VDefaultsProvider } from "../VDefaultsProvider/index.mjs";
7
7
  import { VOverlay } from "../VOverlay/index.mjs";
8
- import { makeVOverlayProps } from "../VOverlay/VOverlay.mjs"; // Composables
8
+ import { makeVOverlayProps } from "../VOverlay/VOverlay.mjs";
9
+ import { VProgressLinear } from "../VProgressLinear/index.mjs"; // Composables
9
10
  import { forwardRefs } from "../../composables/forwardRefs.mjs";
10
11
  import { makeLocationProps, useLocation } from "../../composables/location.mjs";
11
12
  import { makePositionProps, usePosition } from "../../composables/position.mjs";
@@ -14,10 +15,43 @@ import { makeRoundedProps, useRounded } from "../../composables/rounded.mjs";
14
15
  import { useScopeId } from "../../composables/scopeId.mjs";
15
16
  import { makeThemeProps, provideTheme } from "../../composables/theme.mjs";
16
17
  import { genOverlays, makeVariantProps, useVariant } from "../../composables/variant.mjs"; // Utilities
17
- import { mergeProps, onMounted, ref, watch } from 'vue';
18
- import { genericComponent, omit, propsFactory, useRender } from "../../util/index.mjs";
18
+ import { mergeProps, nextTick, onMounted, onScopeDispose, ref, shallowRef, watch } from 'vue';
19
+ import { genericComponent, omit, propsFactory, refElement, useRender } from "../../util/index.mjs";
20
+ function useCountdown(milliseconds) {
21
+ const time = shallowRef(milliseconds);
22
+ let timer = -1;
23
+ function clear() {
24
+ clearInterval(timer);
25
+ }
26
+ function reset() {
27
+ clear();
28
+ nextTick(() => time.value = milliseconds);
29
+ }
30
+ function start(el) {
31
+ const style = el ? getComputedStyle(el) : {
32
+ transitionDuration: 0.2
33
+ };
34
+ const interval = parseFloat(style.transitionDuration) * 1000 || 200;
35
+ clear();
36
+ if (time.value <= 0) return;
37
+ const startTime = performance.now();
38
+ timer = window.setInterval(() => {
39
+ const elapsed = performance.now() - startTime + interval;
40
+ time.value = Math.max(milliseconds - elapsed, 0);
41
+ if (time.value <= 0) clear();
42
+ }, interval);
43
+ }
44
+ onScopeDispose(clear);
45
+ return {
46
+ clear,
47
+ time,
48
+ start,
49
+ reset
50
+ };
51
+ }
19
52
  export const makeVSnackbarProps = propsFactory({
20
53
  multiLine: Boolean,
54
+ timer: [Boolean, String],
21
55
  timeout: {
22
56
  type: [Number, String],
23
57
  default: 5000
@@ -65,7 +99,10 @@ export const VSnackbar = genericComponent()({
65
99
  const {
66
100
  roundedClasses
67
101
  } = useRounded(props);
102
+ const countdown = useCountdown(Number(props.timeout));
68
103
  const overlay = ref();
104
+ const timerRef = ref();
105
+ const isHovering = shallowRef(false);
69
106
  watch(isActive, startTimeout);
70
107
  watch(() => props.timeout, startTimeout);
71
108
  onMounted(() => {
@@ -73,16 +110,28 @@ export const VSnackbar = genericComponent()({
73
110
  });
74
111
  let activeTimeout = -1;
75
112
  function startTimeout() {
113
+ countdown.reset();
76
114
  window.clearTimeout(activeTimeout);
77
115
  const timeout = Number(props.timeout);
78
116
  if (!isActive.value || timeout === -1) return;
117
+ const element = refElement(timerRef.value);
118
+ countdown.start(element);
79
119
  activeTimeout = window.setTimeout(() => {
80
120
  isActive.value = false;
81
121
  }, timeout);
82
122
  }
83
- function onPointerenter() {
123
+ function clearTimeout() {
124
+ countdown.reset();
84
125
  window.clearTimeout(activeTimeout);
85
126
  }
127
+ function onPointerenter() {
128
+ isHovering.value = true;
129
+ clearTimeout();
130
+ }
131
+ function onPointerleave() {
132
+ isHovering.value = false;
133
+ startTimeout();
134
+ }
86
135
  useRender(() => {
87
136
  const [overlayProps] = VOverlay.filterProps(props);
88
137
  return _createVNode(VOverlay, _mergeProps({
@@ -90,6 +139,7 @@ export const VSnackbar = genericComponent()({
90
139
  "class": ['v-snackbar', {
91
140
  'v-snackbar--active': isActive.value,
92
141
  'v-snackbar--multi-line': props.multiLine && !props.vertical,
142
+ 'v-snackbar--timer': !!props.timer,
93
143
  'v-snackbar--vertical': props.vertical
94
144
  }, positionClasses.value, props.class],
95
145
  "style": props.style
@@ -100,7 +150,7 @@ export const VSnackbar = genericComponent()({
100
150
  class: ['v-snackbar__wrapper', themeClasses.value, colorClasses.value, roundedClasses.value, variantClasses.value],
101
151
  style: [locationStyles.value, colorStyles.value],
102
152
  onPointerenter,
103
- onPointerleave: startTimeout
153
+ onPointerleave
104
154
  }, overlayProps.contentProps),
105
155
  "persistent": true,
106
156
  "noClickAnimation": true,
@@ -108,7 +158,16 @@ export const VSnackbar = genericComponent()({
108
158
  "scrollStrategy": "none",
109
159
  "_disableGlobalStack": true
110
160
  }, scopeId), {
111
- default: () => [genOverlays(false, 'v-snackbar'), slots.default && _createVNode("div", {
161
+ default: () => [genOverlays(false, 'v-snackbar'), props.timer && _createVNode("div", {
162
+ "key": "timer",
163
+ "class": "v-snackbar__timer"
164
+ }, [_createVNode(VProgressLinear, {
165
+ "ref": timerRef,
166
+ "active": !isHovering.value,
167
+ "color": typeof props.timer === 'string' ? props.timer : 'info',
168
+ "max": props.timeout,
169
+ "model-value": countdown.time.value
170
+ }, null)]), slots.default && _createVNode("div", {
112
171
  "class": "v-snackbar__content",
113
172
  "role": "status",
114
173
  "aria-live": "polite"
@@ -1 +1 @@
1
- {"version":3,"file":"VSnackbar.mjs","names":["VDefaultsProvider","VOverlay","makeVOverlayProps","forwardRefs","makeLocationProps","useLocation","makePositionProps","usePosition","useProxiedModel","makeRoundedProps","useRounded","useScopeId","makeThemeProps","provideTheme","genOverlays","makeVariantProps","useVariant","mergeProps","onMounted","ref","watch","genericComponent","omit","propsFactory","useRender","makeVSnackbarProps","multiLine","Boolean","timeout","type","Number","String","default","vertical","location","transition","VSnackbar","name","props","emits","v","setup","_ref","slots","isActive","locationStyles","positionClasses","scopeId","themeClasses","colorClasses","colorStyles","variantClasses","roundedClasses","overlay","startTimeout","value","activeTimeout","window","clearTimeout","setTimeout","onPointerenter","overlayProps","filterProps","_createVNode","_mergeProps","class","style","$event","onPointerleave","contentProps","actions","VBtn","variant","ripple","activator"],"sources":["../../../src/components/VSnackbar/VSnackbar.tsx"],"sourcesContent":["// Styles\nimport './VSnackbar.sass'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { useScopeId } from '@/composables/scopeId'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Utilities\nimport { mergeProps, onMounted, ref, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\ntype VSnackbarSlots = {\n activator: { isActive: boolean, props: Record<string, any> }\n default: never\n actions: never\n}\n\nexport const makeVSnackbarProps = propsFactory({\n multiLine: Boolean,\n timeout: {\n type: [Number, String],\n default: 5000,\n },\n vertical: Boolean,\n\n ...makeLocationProps({ location: 'bottom' } as const),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeVariantProps(),\n ...makeThemeProps(),\n ...omit(makeVOverlayProps({\n transition: 'v-snackbar-transition',\n }), ['persistent', 'noClickAnimation', 'scrim', 'scrollStrategy']),\n}, 'VSnackbar')\n\nexport const VSnackbar = genericComponent<VSnackbarSlots>()({\n name: 'VSnackbar',\n\n props: makeVSnackbarProps(),\n\n emits: {\n 'update:modelValue': (v: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { locationStyles } = useLocation(props)\n const { positionClasses } = usePosition(props)\n const { scopeId } = useScopeId()\n const { themeClasses } = provideTheme(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(props)\n const { roundedClasses } = useRounded(props)\n\n const overlay = ref<VOverlay>()\n\n watch(isActive, startTimeout)\n watch(() => props.timeout, startTimeout)\n\n onMounted(() => {\n if (isActive.value) startTimeout()\n })\n\n let activeTimeout = -1\n function startTimeout () {\n window.clearTimeout(activeTimeout)\n const timeout = Number(props.timeout)\n\n if (!isActive.value || timeout === -1) return\n\n activeTimeout = window.setTimeout(() => {\n isActive.value = false\n }, timeout)\n }\n\n function onPointerenter () {\n window.clearTimeout(activeTimeout)\n }\n\n useRender(() => {\n const [overlayProps] = VOverlay.filterProps(props)\n\n return (\n <VOverlay\n ref={ overlay }\n class={[\n 'v-snackbar',\n {\n 'v-snackbar--active': isActive.value,\n 'v-snackbar--multi-line': props.multiLine && !props.vertical,\n 'v-snackbar--vertical': props.vertical,\n },\n positionClasses.value,\n props.class,\n ]}\n style={ props.style }\n { ...overlayProps }\n v-model={ isActive.value }\n contentProps={ mergeProps({\n class: [\n 'v-snackbar__wrapper',\n themeClasses.value,\n colorClasses.value,\n roundedClasses.value,\n variantClasses.value,\n ],\n style: [\n locationStyles.value,\n colorStyles.value,\n ],\n onPointerenter,\n onPointerleave: startTimeout,\n }, overlayProps.contentProps)}\n persistent\n noClickAnimation\n scrim={ false }\n scrollStrategy=\"none\"\n _disableGlobalStack\n { ...scopeId }\n v-slots={{ activator: slots.activator }}\n >\n { genOverlays(false, 'v-snackbar') }\n\n { slots.default && (\n <div\n class=\"v-snackbar__content\"\n role=\"status\"\n aria-live=\"polite\"\n >\n { slots.default() }\n </div>\n )}\n\n { slots.actions && (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n variant: 'text',\n ripple: false,\n },\n }}\n >\n <div class=\"v-snackbar__actions\">\n { slots.actions() }\n </div>\n </VDefaultsProvider>\n )}\n </VOverlay>\n )\n })\n\n return forwardRefs({}, overlay)\n },\n})\n\nexport type VSnackbar = InstanceType<typeof VSnackbar>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VSnackbar.mjs","names":["VDefaultsProvider","VOverlay","makeVOverlayProps","VProgressLinear","forwardRefs","makeLocationProps","useLocation","makePositionProps","usePosition","useProxiedModel","makeRoundedProps","useRounded","useScopeId","makeThemeProps","provideTheme","genOverlays","makeVariantProps","useVariant","mergeProps","nextTick","onMounted","onScopeDispose","ref","shallowRef","watch","genericComponent","omit","propsFactory","refElement","useRender","useCountdown","milliseconds","time","timer","clear","clearInterval","reset","value","start","el","style","getComputedStyle","transitionDuration","interval","parseFloat","startTime","performance","now","window","setInterval","elapsed","Math","max","makeVSnackbarProps","multiLine","Boolean","String","timeout","type","Number","default","vertical","location","transition","VSnackbar","name","props","emits","v","setup","_ref","slots","isActive","locationStyles","positionClasses","scopeId","themeClasses","colorClasses","colorStyles","variantClasses","roundedClasses","countdown","overlay","timerRef","isHovering","startTimeout","activeTimeout","clearTimeout","element","setTimeout","onPointerenter","onPointerleave","overlayProps","filterProps","_createVNode","_mergeProps","class","$event","contentProps","actions","VBtn","variant","ripple","activator"],"sources":["../../../src/components/VSnackbar/VSnackbar.tsx"],"sourcesContent":["// Styles\nimport './VSnackbar.sass'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\nimport { VProgressLinear } from '@/components/VProgressLinear'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { useScopeId } from '@/composables/scopeId'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Utilities\nimport { mergeProps, nextTick, onMounted, onScopeDispose, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, refElement, useRender } from '@/util'\n\ntype VSnackbarSlots = {\n activator: { isActive: boolean, props: Record<string, any> }\n default: never\n actions: never\n}\n\nfunction useCountdown (milliseconds: number) {\n const time = shallowRef(milliseconds)\n let timer = -1\n\n function clear () {\n clearInterval(timer)\n }\n\n function reset () {\n clear()\n\n nextTick(() => time.value = milliseconds)\n }\n\n function start (el?: HTMLElement) {\n const style = el ? getComputedStyle(el) : { transitionDuration: 0.2 }\n const interval = parseFloat(style.transitionDuration) * 1000 || 200\n\n clear()\n\n if (time.value <= 0) return\n\n const startTime = performance.now()\n timer = window.setInterval(() => {\n const elapsed = performance.now() - startTime + interval\n time.value = Math.max(milliseconds - elapsed, 0)\n\n if (time.value <= 0) clear()\n }, interval)\n }\n\n onScopeDispose(clear)\n\n return { clear, time, start, reset }\n}\n\nexport const makeVSnackbarProps = propsFactory({\n multiLine: Boolean,\n timer: [Boolean, String],\n timeout: {\n type: [Number, String],\n default: 5000,\n },\n vertical: Boolean,\n\n ...makeLocationProps({ location: 'bottom' } as const),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeVariantProps(),\n ...makeThemeProps(),\n ...omit(makeVOverlayProps({\n transition: 'v-snackbar-transition',\n }), ['persistent', 'noClickAnimation', 'scrim', 'scrollStrategy']),\n}, 'VSnackbar')\n\nexport const VSnackbar = genericComponent<VSnackbarSlots>()({\n name: 'VSnackbar',\n\n props: makeVSnackbarProps(),\n\n emits: {\n 'update:modelValue': (v: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { locationStyles } = useLocation(props)\n const { positionClasses } = usePosition(props)\n const { scopeId } = useScopeId()\n const { themeClasses } = provideTheme(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(props)\n const { roundedClasses } = useRounded(props)\n const countdown = useCountdown(Number(props.timeout))\n\n const overlay = ref<VOverlay>()\n const timerRef = ref<VProgressLinear>()\n const isHovering = shallowRef(false)\n\n watch(isActive, startTimeout)\n watch(() => props.timeout, startTimeout)\n\n onMounted(() => {\n if (isActive.value) startTimeout()\n })\n\n let activeTimeout = -1\n function startTimeout () {\n countdown.reset()\n window.clearTimeout(activeTimeout)\n const timeout = Number(props.timeout)\n\n if (!isActive.value || timeout === -1) return\n\n const element = refElement(timerRef.value)\n\n countdown.start(element)\n\n activeTimeout = window.setTimeout(() => {\n isActive.value = false\n }, timeout)\n }\n\n function clearTimeout () {\n countdown.reset()\n window.clearTimeout(activeTimeout)\n }\n\n function onPointerenter () {\n isHovering.value = true\n clearTimeout()\n }\n\n function onPointerleave () {\n isHovering.value = false\n startTimeout()\n }\n\n useRender(() => {\n const [overlayProps] = VOverlay.filterProps(props)\n\n return (\n <VOverlay\n ref={ overlay }\n class={[\n 'v-snackbar',\n {\n 'v-snackbar--active': isActive.value,\n 'v-snackbar--multi-line': props.multiLine && !props.vertical,\n 'v-snackbar--timer': !!props.timer,\n 'v-snackbar--vertical': props.vertical,\n },\n positionClasses.value,\n props.class,\n ]}\n style={ props.style }\n { ...overlayProps }\n v-model={ isActive.value }\n contentProps={ mergeProps({\n class: [\n 'v-snackbar__wrapper',\n themeClasses.value,\n colorClasses.value,\n roundedClasses.value,\n variantClasses.value,\n ],\n style: [\n locationStyles.value,\n colorStyles.value,\n ],\n onPointerenter,\n onPointerleave,\n }, overlayProps.contentProps)}\n persistent\n noClickAnimation\n scrim={ false }\n scrollStrategy=\"none\"\n _disableGlobalStack\n { ...scopeId }\n v-slots={{ activator: slots.activator }}\n >\n { genOverlays(false, 'v-snackbar') }\n\n { props.timer && (\n <div key=\"timer\" class=\"v-snackbar__timer\">\n <VProgressLinear\n ref={ timerRef }\n active={ !isHovering.value }\n color={ typeof props.timer === 'string' ? props.timer : 'info' }\n max={ props.timeout }\n model-value={ countdown.time.value }\n />\n </div>\n )}\n\n { slots.default && (\n <div\n class=\"v-snackbar__content\"\n role=\"status\"\n aria-live=\"polite\"\n >\n { slots.default() }\n </div>\n )}\n\n { slots.actions && (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n variant: 'text',\n ripple: false,\n },\n }}\n >\n <div class=\"v-snackbar__actions\">\n { slots.actions() }\n </div>\n </VDefaultsProvider>\n )}\n </VOverlay>\n )\n })\n\n return forwardRefs({}, overlay)\n },\n})\n\nexport type VSnackbar = InstanceType<typeof VSnackbar>\n"],"mappings":"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"}
@@ -17,6 +17,7 @@
17
17
  max-width: $snackbar-wrapper-max-width
18
18
  min-height: $snackbar-wrapper-min-height
19
19
  min-width: $snackbar-wrapper-min-width
20
+ overflow: hidden
20
21
  padding: $snackbar-wrapper-padding
21
22
 
22
23
  @include tools.rounded($snackbar-border-radius)
@@ -44,6 +45,14 @@
44
45
  padding: $snackbar-btn-padding
45
46
  min-width: auto
46
47
 
48
+ &__timer
49
+ width: 100%
50
+ position: absolute
51
+ top: 0
52
+
53
+ .v-progress-linear
54
+ transition: .2s linear
55
+
47
56
  &--absolute
48
57
  position: absolute
49
58
  z-index: $snackbar-absolute-z-index