vuetify 3.3.19 → 3.3.21

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 (105) hide show
  1. package/dist/json/attributes.json +43 -31
  2. package/dist/json/importMap-labs.json +4 -4
  3. package/dist/json/importMap.json +4 -4
  4. package/dist/json/tags.json +3 -0
  5. package/dist/json/web-types.json +97 -70
  6. package/dist/vuetify-labs.css +5073 -5056
  7. package/dist/vuetify-labs.d.ts +240 -220
  8. package/dist/vuetify-labs.esm.js +101 -62
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +101 -62
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +5452 -5440
  13. package/dist/vuetify.d.ts +168 -166
  14. package/dist/vuetify.esm.js +56 -41
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +56 -41
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +775 -773
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/blueprints/index.d.mts +2 -0
  22. package/lib/blueprints/md1.d.mts +2 -0
  23. package/lib/blueprints/md2.d.mts +2 -0
  24. package/lib/blueprints/md3.d.mts +2 -0
  25. package/lib/components/VAutocomplete/index.d.mts +14 -14
  26. package/lib/components/VCheckbox/index.d.mts +8 -8
  27. package/lib/components/VChip/VChip.css +67 -67
  28. package/lib/components/VChip/_variables.scss +1 -1
  29. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +1 -0
  30. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  31. package/lib/components/VCombobox/VCombobox.mjs +1 -1
  32. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  33. package/lib/components/VCombobox/index.d.mts +14 -14
  34. package/lib/components/VField/VField.css +3 -0
  35. package/lib/components/VField/VField.sass +3 -0
  36. package/lib/components/VField/_variables.scss +1 -0
  37. package/lib/components/VFileInput/index.d.mts +20 -20
  38. package/lib/components/VInput/index.d.mts +8 -8
  39. package/lib/components/VList/VList.css +0 -3
  40. package/lib/components/VList/VList.sass +0 -4
  41. package/lib/components/VList/VListItem.css +9 -1
  42. package/lib/components/VList/VListItem.sass +12 -1
  43. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +8 -7
  44. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  45. package/lib/components/VRadioGroup/index.d.mts +8 -8
  46. package/lib/components/VRangeSlider/index.d.mts +8 -8
  47. package/lib/components/VSelect/index.d.mts +14 -14
  48. package/lib/components/VSlider/VSliderThumb.css +2 -0
  49. package/lib/components/VSlider/VSliderThumb.mjs +7 -6
  50. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  51. package/lib/components/VSlider/VSliderThumb.sass +2 -0
  52. package/lib/components/VSlider/VSliderTrack.mjs +5 -7
  53. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  54. package/lib/components/VSlider/index.d.mts +8 -8
  55. package/lib/components/VSlider/slider.mjs +4 -10
  56. package/lib/components/VSlider/slider.mjs.map +1 -1
  57. package/lib/components/VSwitch/index.d.mts +8 -8
  58. package/lib/components/VTable/VTable.css +3 -0
  59. package/lib/components/VTable/VTable.sass +3 -0
  60. package/lib/components/VTextField/VTextField.mjs +1 -1
  61. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  62. package/lib/components/VTextField/index.d.mts +26 -26
  63. package/lib/components/VTextarea/index.d.mts +20 -20
  64. package/lib/components/VTimeline/VTimeline.css +0 -1
  65. package/lib/components/VTimeline/VTimeline.sass +0 -1
  66. package/lib/components/VValidation/index.d.mts +8 -8
  67. package/lib/components/index.d.mts +164 -164
  68. package/lib/composables/forwardRefs.mjs +4 -4
  69. package/lib/composables/forwardRefs.mjs.map +1 -1
  70. package/lib/composables/validation.mjs +2 -2
  71. package/lib/composables/validation.mjs.map +1 -1
  72. package/lib/entry-bundler.mjs +1 -1
  73. package/lib/framework.mjs +1 -1
  74. package/lib/index.d.mts +4 -2
  75. package/lib/labs/VDataTable/VDataTableFooter.mjs +12 -4
  76. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
  77. package/lib/labs/VDataTable/VDataTableVirtual.mjs +5 -5
  78. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  79. package/lib/labs/VDataTable/composables/select.mjs +6 -6
  80. package/lib/labs/VDataTable/composables/select.mjs.map +1 -1
  81. package/lib/labs/VDataTable/index.d.mts +48 -48
  82. package/lib/labs/VDateInput/index.d.mts +14 -14
  83. package/lib/labs/VDatePicker/VDatePickerMonth.mjs +14 -2
  84. package/lib/labs/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  85. package/lib/labs/VDatePicker/index.d.mts +18 -0
  86. package/lib/labs/VDateRangePicker/index.d.mts +12 -0
  87. package/lib/labs/VOtpInput/VOtpInput.css +3 -2
  88. package/lib/labs/VOtpInput/VOtpInput.mjs +7 -4
  89. package/lib/labs/VOtpInput/VOtpInput.mjs.map +1 -1
  90. package/lib/labs/VOtpInput/VOtpInput.sass +9 -8
  91. package/lib/labs/VOtpInput/_variables.scss +9 -0
  92. package/lib/labs/VSkeletonLoader/VSkeletonLoader.css +4 -0
  93. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs +2 -1
  94. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
  95. package/lib/labs/VSkeletonLoader/VSkeletonLoader.sass +4 -0
  96. package/lib/labs/VSkeletonLoader/index.d.mts +8 -8
  97. package/lib/labs/components.d.mts +74 -56
  98. package/lib/labs/date/DateAdapter.mjs.map +1 -1
  99. package/lib/labs/date/adapters/vuetify.d.mts +4 -0
  100. package/lib/labs/date/adapters/vuetify.mjs +18 -1
  101. package/lib/labs/date/adapters/vuetify.mjs.map +1 -1
  102. package/lib/labs/date/date.mjs +1 -1
  103. package/lib/labs/date/date.mjs.map +1 -1
  104. package/lib/labs/date/index.d.mts +4 -0
  105. package/package.json +2 -2
@@ -32,7 +32,6 @@ export const VSliderTrack = genericComponent()({
32
32
  if (!slider) throw new Error('[Vuetify] v-slider-track must be inside v-slider or v-range-slider');
33
33
  const {
34
34
  color,
35
- horizontalDirection,
36
35
  parsedTicks,
37
36
  rounded,
38
37
  showTicks,
@@ -42,7 +41,8 @@ export const VSliderTrack = genericComponent()({
42
41
  trackSize,
43
42
  vertical,
44
43
  min,
45
- max
44
+ max,
45
+ indexFromEnd
46
46
  } = slider;
47
47
  const {
48
48
  roundedClasses
@@ -55,7 +55,7 @@ export const VSliderTrack = genericComponent()({
55
55
  backgroundColorClasses: trackColorClasses,
56
56
  backgroundColorStyles: trackColorStyles
57
57
  } = useBackgroundColor(trackColor);
58
- const startDir = computed(() => `inset-${vertical.value ? 'block-end' : 'inline-start'}`);
58
+ const startDir = computed(() => `inset-${vertical.value ? 'block' : 'inline'}-${indexFromEnd.value ? 'end' : 'start'}`);
59
59
  const endDir = computed(() => vertical.value ? 'height' : 'width');
60
60
  const backgroundStyles = computed(() => {
61
61
  return {
@@ -74,7 +74,6 @@ export const VSliderTrack = genericComponent()({
74
74
  if (!showTicks.value) return [];
75
75
  const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value;
76
76
  return ticks.map((tick, index) => {
77
- const directionProperty = vertical.value ? 'bottom' : 'margin-inline-start';
78
77
  const directionValue = tick.value !== min.value && tick.value !== max.value ? convertToUnit(tick.position, '%') : undefined;
79
78
  return _createVNode("div", {
80
79
  "key": tick.value,
@@ -84,7 +83,7 @@ export const VSliderTrack = genericComponent()({
84
83
  'v-slider-track__tick--last': tick.value === max.value
85
84
  }],
86
85
  "style": {
87
- [directionProperty]: directionValue
86
+ [startDir.value]: directionValue
88
87
  }
89
88
  }, [(tick.label || slots['tick-label']) && _createVNode("div", {
90
89
  "class": "v-slider-track__tick-label"
@@ -99,8 +98,7 @@ export const VSliderTrack = genericComponent()({
99
98
  "class": ['v-slider-track', roundedClasses.value, props.class],
100
99
  "style": [{
101
100
  '--v-slider-track-size': convertToUnit(trackSize.value),
102
- '--v-slider-tick-size': convertToUnit(tickSize.value),
103
- direction: !vertical.value ? horizontalDirection.value : undefined
101
+ '--v-slider-tick-size': convertToUnit(tickSize.value)
104
102
  }, props.style]
105
103
  }, [_createVNode("div", {
106
104
  "class": ['v-slider-track__background', trackColorClasses.value, {
@@ -1 +1 @@
1
- {"version":3,"file":"VSliderTrack.mjs","names":["VSliderSymbol","useBackgroundColor","makeComponentProps","useRounded","computed","inject","convertToUnit","genericComponent","propsFactory","useRender","makeVSliderTrackProps","start","type","Number","required","stop","VSliderTrack","name","props","emits","setup","_ref","slots","slider","Error","color","horizontalDirection","parsedTicks","rounded","showTicks","tickSize","trackColor","trackFillColor","trackSize","vertical","min","max","roundedClasses","backgroundColorClasses","trackFillColorClasses","backgroundColorStyles","trackFillColorStyles","trackColorClasses","trackColorStyles","startDir","value","endDir","backgroundStyles","trackFillWidth","trackFillStyles","computedTicks","ticks","slice","reverse","map","tick","index","directionProperty","directionValue","position","undefined","_createVNode","label","class","direction","style"],"sources":["../../../src/components/VSlider/VSliderTrack.tsx"],"sourcesContent":["// Styles\nimport './VSliderTrack.sass'\n\n// Components\nimport { VSliderSymbol } from './slider'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useRounded } from '@/composables/rounded'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Tick } from './slider'\n\nexport type VSliderTrackSlots = {\n 'tick-label': { tick: Tick, index: number }\n}\n\nexport const makeVSliderTrackProps = propsFactory({\n start: {\n type: Number,\n required: true,\n },\n stop: {\n type: Number,\n required: true,\n },\n\n ...makeComponentProps(),\n}, 'VSliderTrack')\n\nexport const VSliderTrack = genericComponent<VSliderTrackSlots>()({\n name: 'VSliderTrack',\n\n props: makeVSliderTrackProps(),\n\n emits: {},\n\n setup (props, { slots }) {\n const slider = inject(VSliderSymbol)\n\n if (!slider) throw new Error('[Vuetify] v-slider-track must be inside v-slider or v-range-slider')\n\n const {\n color,\n horizontalDirection,\n parsedTicks,\n rounded,\n showTicks,\n tickSize,\n trackColor,\n trackFillColor,\n trackSize,\n vertical,\n min,\n max,\n } = slider\n\n const { roundedClasses } = useRounded(rounded)\n\n const {\n backgroundColorClasses: trackFillColorClasses,\n backgroundColorStyles: trackFillColorStyles,\n } = useBackgroundColor(trackFillColor)\n\n const {\n backgroundColorClasses: trackColorClasses,\n backgroundColorStyles: trackColorStyles,\n } = useBackgroundColor(trackColor)\n\n const startDir = computed(() => `inset-${vertical.value ? 'block-end' : 'inline-start'}`)\n const endDir = computed(() => vertical.value ? 'height' : 'width')\n\n const backgroundStyles = computed(() => {\n return {\n [startDir.value]: '0%',\n [endDir.value]: '100%',\n }\n })\n\n const trackFillWidth = computed(() => props.stop - props.start)\n\n const trackFillStyles = computed(() => {\n return {\n [startDir.value]: convertToUnit(props.start, '%'),\n [endDir.value]: convertToUnit(trackFillWidth.value, '%'),\n }\n })\n\n const computedTicks = computed(() => {\n if (!showTicks.value) return []\n\n const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value\n\n return ticks.map((tick, index) => {\n const directionProperty = vertical.value ? 'bottom' : 'margin-inline-start'\n const directionValue = tick.value !== min.value && tick.value !== max.value ? convertToUnit(tick.position, '%') : undefined\n\n return (\n <div\n key={ tick.value }\n class={[\n 'v-slider-track__tick',\n {\n 'v-slider-track__tick--filled': tick.position >= props.start && tick.position <= props.stop,\n 'v-slider-track__tick--first': tick.value === min.value,\n 'v-slider-track__tick--last': tick.value === max.value,\n },\n ]}\n style={{ [directionProperty]: directionValue }}\n >\n {\n (tick.label || slots['tick-label']) && (\n <div class=\"v-slider-track__tick-label\">\n { slots['tick-label']?.({ tick, index }) ?? tick.label }\n </div>\n )\n }\n </div>\n )\n })\n })\n\n useRender(() => {\n return (\n <div\n class={[\n 'v-slider-track',\n roundedClasses.value,\n props.class,\n ]}\n style={[\n {\n '--v-slider-track-size': convertToUnit(trackSize.value),\n '--v-slider-tick-size': convertToUnit(tickSize.value),\n direction: !vertical.value ? horizontalDirection.value : undefined,\n },\n props.style,\n ]}\n >\n <div\n class={[\n 'v-slider-track__background',\n trackColorClasses.value,\n {\n 'v-slider-track__background--opacity': !!color.value || !trackFillColor.value,\n },\n ]}\n style={{\n ...backgroundStyles.value,\n ...trackColorStyles.value,\n }}\n />\n <div\n class={[\n 'v-slider-track__fill',\n trackFillColorClasses.value,\n ]}\n style={{\n ...trackFillStyles.value,\n ...trackFillColorStyles.value,\n }}\n />\n\n { showTicks.value && (\n <div\n class={[\n 'v-slider-track__ticks',\n {\n 'v-slider-track__ticks--always-show': showTicks.value === 'always',\n },\n ]}\n >\n { computedTicks.value }\n </div>\n )}\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VSliderTrack = InstanceType<typeof VSliderTrack>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VSliderTrack.mjs","names":["VSliderSymbol","useBackgroundColor","makeComponentProps","useRounded","computed","inject","convertToUnit","genericComponent","propsFactory","useRender","makeVSliderTrackProps","start","type","Number","required","stop","VSliderTrack","name","props","emits","setup","_ref","slots","slider","Error","color","parsedTicks","rounded","showTicks","tickSize","trackColor","trackFillColor","trackSize","vertical","min","max","indexFromEnd","roundedClasses","backgroundColorClasses","trackFillColorClasses","backgroundColorStyles","trackFillColorStyles","trackColorClasses","trackColorStyles","startDir","value","endDir","backgroundStyles","trackFillWidth","trackFillStyles","computedTicks","ticks","slice","reverse","map","tick","index","directionValue","position","undefined","_createVNode","label","class","style"],"sources":["../../../src/components/VSlider/VSliderTrack.tsx"],"sourcesContent":["// Styles\nimport './VSliderTrack.sass'\n\n// Components\nimport { VSliderSymbol } from './slider'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useRounded } from '@/composables/rounded'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Tick } from './slider'\n\nexport type VSliderTrackSlots = {\n 'tick-label': { tick: Tick, index: number }\n}\n\nexport const makeVSliderTrackProps = propsFactory({\n start: {\n type: Number,\n required: true,\n },\n stop: {\n type: Number,\n required: true,\n },\n\n ...makeComponentProps(),\n}, 'VSliderTrack')\n\nexport const VSliderTrack = genericComponent<VSliderTrackSlots>()({\n name: 'VSliderTrack',\n\n props: makeVSliderTrackProps(),\n\n emits: {},\n\n setup (props, { slots }) {\n const slider = inject(VSliderSymbol)\n\n if (!slider) throw new Error('[Vuetify] v-slider-track must be inside v-slider or v-range-slider')\n\n const {\n color,\n parsedTicks,\n rounded,\n showTicks,\n tickSize,\n trackColor,\n trackFillColor,\n trackSize,\n vertical,\n min,\n max,\n indexFromEnd,\n } = slider\n\n const { roundedClasses } = useRounded(rounded)\n\n const {\n backgroundColorClasses: trackFillColorClasses,\n backgroundColorStyles: trackFillColorStyles,\n } = useBackgroundColor(trackFillColor)\n\n const {\n backgroundColorClasses: trackColorClasses,\n backgroundColorStyles: trackColorStyles,\n } = useBackgroundColor(trackColor)\n\n const startDir = computed(() => `inset-${vertical.value ? 'block' : 'inline'}-${indexFromEnd.value ? 'end' : 'start'}`)\n const endDir = computed(() => vertical.value ? 'height' : 'width')\n\n const backgroundStyles = computed(() => {\n return {\n [startDir.value]: '0%',\n [endDir.value]: '100%',\n }\n })\n\n const trackFillWidth = computed(() => props.stop - props.start)\n\n const trackFillStyles = computed(() => {\n return {\n [startDir.value]: convertToUnit(props.start, '%'),\n [endDir.value]: convertToUnit(trackFillWidth.value, '%'),\n }\n })\n\n const computedTicks = computed(() => {\n if (!showTicks.value) return []\n\n const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value\n\n return ticks.map((tick, index) => {\n const directionValue = tick.value !== min.value && tick.value !== max.value ? convertToUnit(tick.position, '%') : undefined\n\n return (\n <div\n key={ tick.value }\n class={[\n 'v-slider-track__tick',\n {\n 'v-slider-track__tick--filled': tick.position >= props.start && tick.position <= props.stop,\n 'v-slider-track__tick--first': tick.value === min.value,\n 'v-slider-track__tick--last': tick.value === max.value,\n },\n ]}\n style={{ [startDir.value]: directionValue }}\n >\n {\n (tick.label || slots['tick-label']) && (\n <div class=\"v-slider-track__tick-label\">\n { slots['tick-label']?.({ tick, index }) ?? tick.label }\n </div>\n )\n }\n </div>\n )\n })\n })\n\n useRender(() => {\n return (\n <div\n class={[\n 'v-slider-track',\n roundedClasses.value,\n props.class,\n ]}\n style={[\n {\n '--v-slider-track-size': convertToUnit(trackSize.value),\n '--v-slider-tick-size': convertToUnit(tickSize.value),\n },\n props.style,\n ]}\n >\n <div\n class={[\n 'v-slider-track__background',\n trackColorClasses.value,\n {\n 'v-slider-track__background--opacity': !!color.value || !trackFillColor.value,\n },\n ]}\n style={{\n ...backgroundStyles.value,\n ...trackColorStyles.value,\n }}\n />\n <div\n class={[\n 'v-slider-track__fill',\n trackFillColorClasses.value,\n ]}\n style={{\n ...trackFillStyles.value,\n ...trackFillColorStyles.value,\n }}\n />\n\n { showTicks.value && (\n <div\n class={[\n 'v-slider-track__ticks',\n {\n 'v-slider-track__ticks--always-show': showTicks.value === 'always',\n },\n ]}\n >\n { computedTicks.value }\n </div>\n )}\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VSliderTrack = InstanceType<typeof VSliderTrack>\n"],"mappings":"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"}
@@ -60,7 +60,7 @@ declare const VSlider: {
60
60
  density?: Density | undefined;
61
61
  modelValue?: string | number | undefined;
62
62
  focused?: boolean | undefined;
63
- errorMessages?: string | readonly string[] | undefined;
63
+ errorMessages?: string | readonly string[] | null | undefined;
64
64
  maxErrors?: string | number | undefined;
65
65
  rules?: readonly ValidationRule[] | undefined;
66
66
  centerAffix?: boolean | undefined;
@@ -233,7 +233,7 @@ declare const VSlider: {
233
233
  density: Density;
234
234
  modelValue: string | number;
235
235
  focused: boolean;
236
- errorMessages: string | readonly string[];
236
+ errorMessages: string | readonly string[] | null;
237
237
  maxErrors: string | number;
238
238
  rules: readonly ValidationRule[];
239
239
  centerAffix: boolean;
@@ -334,7 +334,7 @@ declare const VSlider: {
334
334
  density: Density;
335
335
  modelValue: string | number;
336
336
  focused: boolean;
337
- errorMessages: string | readonly string[];
337
+ errorMessages: string | readonly string[] | null;
338
338
  maxErrors: string | number;
339
339
  rules: readonly ValidationRule[];
340
340
  centerAffix: boolean;
@@ -409,7 +409,7 @@ declare const VSlider: {
409
409
  density: Density;
410
410
  modelValue: string | number;
411
411
  focused: boolean;
412
- errorMessages: string | readonly string[];
412
+ errorMessages: string | readonly string[] | null;
413
413
  maxErrors: string | number;
414
414
  rules: readonly ValidationRule[];
415
415
  centerAffix: boolean;
@@ -508,7 +508,7 @@ declare const VSlider: {
508
508
  density: Density;
509
509
  modelValue: string | number;
510
510
  focused: boolean;
511
- errorMessages: string | readonly string[];
511
+ errorMessages: string | readonly string[] | null;
512
512
  maxErrors: string | number;
513
513
  rules: readonly ValidationRule[];
514
514
  centerAffix: boolean;
@@ -609,7 +609,7 @@ declare const VSlider: {
609
609
  density: Density;
610
610
  modelValue: string | number;
611
611
  focused: boolean;
612
- errorMessages: string | readonly string[];
612
+ errorMessages: string | readonly string[] | null;
613
613
  maxErrors: string | number;
614
614
  rules: readonly ValidationRule[];
615
615
  centerAffix: boolean;
@@ -662,7 +662,7 @@ declare const VSlider: {
662
662
  };
663
663
  error: BooleanConstructor;
664
664
  errorMessages: {
665
- type: vue.PropType<string | readonly string[]>;
665
+ type: vue.PropType<string | readonly string[] | null>;
666
666
  default: () => never[];
667
667
  };
668
668
  maxErrors: {
@@ -778,7 +778,7 @@ declare const VSlider: {
778
778
  };
779
779
  error: BooleanConstructor;
780
780
  errorMessages: {
781
- type: vue.PropType<string | readonly string[]>;
781
+ type: vue.PropType<string | readonly string[] | null>;
782
782
  default: () => never[];
783
783
  };
784
784
  maxErrors: {
@@ -111,13 +111,8 @@ export const useSlider = _ref => {
111
111
  isRtl
112
112
  } = useRtl();
113
113
  const isReversed = toRef(props, 'reverse');
114
- const horizontalDirection = computed(() => {
115
- let hd = isRtl.value ? 'rtl' : 'ltr';
116
- if (props.reverse) {
117
- hd = hd === 'rtl' ? 'ltr' : 'rtl';
118
- }
119
- return hd;
120
- });
114
+ const vertical = computed(() => props.direction === 'vertical');
115
+ const indexFromEnd = computed(() => vertical.value !== isReversed.value);
121
116
  const {
122
117
  min,
123
118
  max,
@@ -130,7 +125,6 @@ export const useSlider = _ref => {
130
125
  const trackSize = computed(() => parseInt(props.trackSize, 10));
131
126
  const numTicks = computed(() => (max.value - min.value) / step.value);
132
127
  const disabled = toRef(props, 'disabled');
133
- const vertical = computed(() => props.direction === 'vertical');
134
128
  const thumbColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color);
135
129
  const trackColor = computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color);
136
130
  const trackFillColor = computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color);
@@ -151,7 +145,7 @@ export const useSlider = _ref => {
151
145
 
152
146
  // It is possible for left to be NaN, force to number
153
147
  let clickPos = Math.min(Math.max((clickOffset - trackStart - startOffset.value) / trackLength, 0), 1) || 0;
154
- if (vertical || horizontalDirection.value === 'rtl') clickPos = 1 - clickPos;
148
+ if (vertical ? indexFromEnd.value : indexFromEnd.value !== isRtl.value) clickPos = 1 - clickPos;
155
149
  return roundValue(min.value + clickPos * (max.value - min.value));
156
150
  }
157
151
  const handleStop = e => {
@@ -255,8 +249,8 @@ export const useSlider = _ref => {
255
249
  direction: toRef(props, 'direction'),
256
250
  elevation: toRef(props, 'elevation'),
257
251
  hasLabels,
258
- horizontalDirection,
259
252
  isReversed,
253
+ indexFromEnd,
260
254
  min,
261
255
  max,
262
256
  mousePressed,
@@ -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","useSteps","props","parseFloat","decimals","Math","value","roundValue","clamped","offset","newValue","round","toFixed","useSlider","_ref","steps","onSliderStart","onSliderMove","onSliderEnd","getActiveThumb","isRtl","isReversed","indexFromEnd","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 indexFromEnd: Ref<boolean>\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 vertical = computed(() => props.direction === 'vertical')\n const indexFromEnd = computed(() => vertical.value !== isReversed.value)\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\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 ? indexFromEnd.value : indexFromEnd.value !== isRtl.value) 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 isReversed,\n indexFromEnd,\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":"AAAA;AACA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,MAAM;AAAA,SACNC,gBAAgB,yCAEzB;AACA,SAASC,QAAQ,EAAEC,OAAO,EAAEC,GAAG,EAAEC,UAAU,EAAEC,KAAK,QAAQ,KAAK;AAAA,SACtDC,KAAK,EAAEC,WAAW,EAAEC,WAAW,EAAEC,YAAY,gCAEtD;AA+CA,OAAO,MAAMC,aAA0C,GAAGC,MAAM,CAACC,GAAG,CAAC,kBAAkB,CAAC;AAExF,OAAO,SAASC,SAASA,CAAEC,CAA0B,EAAEC,EAAe,EAAEC,SAAiB,EAAE;EACzF,MAAMC,QAAQ,GAAGD,SAAS,KAAK,UAAU;EACzC,MAAME,IAAI,GAAGH,EAAE,CAACI,qBAAqB,EAAE;EACvC,MAAMC,KAAK,GAAG,SAAS,IAAIN,CAAC,GAAGA,CAAC,CAACO,OAAO,CAAC,CAAC,CAAC,GAAGP,CAAC;EAC/C,OAAOG,QAAQ,GACXG,KAAK,CAACE,OAAO,IAAIJ,IAAI,CAACK,GAAG,GAAGL,IAAI,CAACM,MAAM,GAAG,CAAC,CAAC,GAC5CJ,KAAK,CAACK,OAAO,IAAIP,IAAI,CAACQ,IAAI,GAAGR,IAAI,CAACS,KAAK,GAAG,CAAC,CAAC;AAClD;AAEA,SAASC,WAAWA,CAAEd,CAA0B,EAAEe,QAA+B,EAAU;EACzF,IAAI,SAAS,IAAIf,CAAC,IAAIA,CAAC,CAACO,OAAO,CAACS,MAAM,EAAE,OAAOhB,CAAC,CAACO,OAAO,CAAC,CAAC,CAAC,CAACQ,QAAQ,CAAC,MAChE,IAAI,gBAAgB,IAAIf,CAAC,IAAIA,CAAC,CAACiB,cAAc,CAACD,MAAM,EAAE,OAAOhB,CAAC,CAACiB,cAAc,CAAC,CAAC,CAAC,CAACF,QAAQ,CAAC,MAC1F,OAAQf,CAAC,CAAgBe,QAAQ,CAAC;AACzC;AAEA,OAAO,MAAMG,eAAe,GAAGvB,YAAY,CAAC;EAC1CwB,QAAQ,EAAE;IACRC,IAAI,EAAEC,OAAmC;IACzCC,OAAO,EAAE;EACX,CAAC;EACDC,KAAK,EAAEF,OAAO;EACdG,QAAQ,EAAE;IACRJ,IAAI,EAAEC,OAAmC;IACzCC,OAAO,EAAE;EACX,CAAC;EACDG,GAAG,EAAE;IACHL,IAAI,EAAE,CAACM,MAAM,EAAEC,MAAM,CAAC;IACtBL,OAAO,EAAE;EACX,CAAC;EACDM,GAAG,EAAE;IACHR,IAAI,EAAE,CAACM,MAAM,EAAEC,MAAM,CAAC;IACtBL,OAAO,EAAE;EACX,CAAC;EACDO,IAAI,EAAE;IACJT,IAAI,EAAE,CAACM,MAAM,EAAEC,MAAM,CAAC;IACtBL,OAAO,EAAE;EACX,CAAC;EACDQ,UAAU,EAAEH,MAAM;EAClBI,UAAU,EAAE;IACVX,IAAI,EAAE,CAACC,OAAO,EAAEM,MAAM,CAA6C;IACnEL,OAAO,EAAEU,SAAS;IAClBC,SAAS,EAAGC,CAAM,IAAK,OAAOA,CAAC,KAAK,SAAS,IAAIA,CAAC,KAAK;EACzD,CAAC;EACDC,SAAS,EAAE;IACTf,IAAI,EAAE,CAACM,MAAM,EAAEC,MAAM,CAAC;IACtBL,OAAO,EAAE;EACX,CAAC;EACDc,SAAS,EAAE;IACThB,IAAI,EAAE,CAACC,OAAO,EAAEM,MAAM,CAAiC;IACvDL,OAAO,EAAE,KAAK;IACdW,SAAS,EAAGC,CAAM,IAAK,OAAOA,CAAC,KAAK,SAAS,IAAIA,CAAC,KAAK;EACzD,CAAC;EACDG,KAAK,EAAE;IACLjB,IAAI,EAAE,CAACkB,KAAK,EAAEC,MAAM;EACtB,CAAC;EACDC,QAAQ,EAAE;IACRpB,IAAI,EAAE,CAACM,MAAM,EAAEC,MAAM,CAAC;IACtBL,OAAO,EAAE;EACX,CAAC;EACDmB,KAAK,EAAEd,MAAM;EACbe,UAAU,EAAEf,MAAM;EAClBgB,cAAc,EAAEhB,MAAM;EACtBiB,SAAS,EAAE;IACTxB,IAAI,EAAE,CAACM,MAAM,EAAEC,MAAM,CAAC;IACtBL,OAAO,EAAE;EACX,CAAC;EACDpB,SAAS,EAAE;IACTkB,IAAI,EAAEO,MAA6C;IACnDL,OAAO,EAAE,YAAY;IACrBW,SAAS,EAAGC,CAAM,IAAK,CAAC,UAAU,EAAE,YAAY,CAAC,CAACW,QAAQ,CAACX,CAAC;EAC9D,CAAC;EACDY,OAAO,EAAEzB,OAAO;EAEhB,GAAGnC,gBAAgB,EAAE;EACrB,GAAGF,kBAAkB,CAAC;IACpB+D,SAAS,EAAE;EACb,CAAC;AACH,CAAC,EAAE,QAAQ,CAAC;AAQZ,OAAO,MAAMC,QAAQ,GAAIC,KAAkB,IAAK;EAC9C,MAAMrB,GAAG,GAAGzC,QAAQ,CAAC,MAAM+D,UAAU,CAACD,KAAK,CAACrB,GAAG,CAAC,CAAC;EACjD,MAAMH,GAAG,GAAGtC,QAAQ,CAAC,MAAM+D,UAAU,CAACD,KAAK,CAACxB,GAAG,CAAC,CAAC;EACjD,MAAMI,IAAI,GAAG1C,QAAQ,CAAC,MAAM,CAAC8D,KAAK,CAACpB,IAAI,GAAG,CAAC,GAAGqB,UAAU,CAACD,KAAK,CAACpB,IAAI,CAAC,GAAG,CAAC,CAAC;EACzE,MAAMsB,QAAQ,GAAGhE,QAAQ,CAAC,MAAMiE,IAAI,CAAC3B,GAAG,CAAC/B,WAAW,CAACmC,IAAI,CAACwB,KAAK,CAAC,EAAE3D,WAAW,CAACkC,GAAG,CAACyB,KAAK,CAAC,CAAC,CAAC;EAE1F,SAASC,UAAUA,CAAED,KAAsB,EAAE;IAC3CA,KAAK,GAAGH,UAAU,CAACG,KAAK,CAAC;IAEzB,IAAIxB,IAAI,CAACwB,KAAK,IAAI,CAAC,EAAE,OAAOA,KAAK;IAEjC,MAAME,OAAO,GAAG/D,KAAK,CAAC6D,KAAK,EAAEzB,GAAG,CAACyB,KAAK,EAAE5B,GAAG,CAAC4B,KAAK,CAAC;IAClD,MAAMG,MAAM,GAAG5B,GAAG,CAACyB,KAAK,GAAGxB,IAAI,CAACwB,KAAK;IACrC,MAAMI,QAAQ,GAAGL,IAAI,CAACM,KAAK,CAAC,CAACH,OAAO,GAAGC,MAAM,IAAI3B,IAAI,CAACwB,KAAK,CAAC,GAAGxB,IAAI,CAACwB,KAAK,GAAGG,MAAM;IAElF,OAAON,UAAU,CAACE,IAAI,CAACxB,GAAG,CAAC6B,QAAQ,EAAEhC,GAAG,CAAC4B,KAAK,CAAC,CAACM,OAAO,CAACR,QAAQ,CAACE,KAAK,CAAC,CAAC;EAC1E;EAEA,OAAO;IAAEzB,GAAG;IAAEH,GAAG;IAAEI,IAAI;IAAEsB,QAAQ;IAAEG;EAAW,CAAC;AACjD,CAAC;AAED,OAAO,MAAMM,SAAS,GAAGC,IAAA,IAcnB;EAAA,IAdoB;IACxBZ,KAAK;IACLa,KAAK;IACLC,aAAa;IACbC,YAAY;IACZC,WAAW;IACXC;EAQF,CAAC,GAAAL,IAAA;EACC,MAAM;IAAEM;EAAM,CAAC,GAAGlF,MAAM,EAAE;EAC1B,MAAMmF,UAAU,GAAG7E,KAAK,CAAC0D,KAAK,EAAE,SAAS,CAAC;EAC1C,MAAM9C,QAAQ,GAAGhB,QAAQ,CAAC,MAAM8D,KAAK,CAAC/C,SAAS,KAAK,UAAU,CAAC;EAC/D,MAAMmE,YAAY,GAAGlF,QAAQ,CAAC,MAAMgB,QAAQ,CAACkD,KAAK,KAAKe,UAAU,CAACf,KAAK,CAAC;EAExE,MAAM;IAAEzB,GAAG;IAAEH,GAAG;IAAEI,IAAI;IAAEsB,QAAQ;IAAEG;EAAW,CAAC,GAAGQ,KAAK;EAEtD,MAAM3B,SAAS,GAAGhD,QAAQ,CAAC,MAAMmF,QAAQ,CAACrB,KAAK,CAACd,SAAS,EAAE,EAAE,CAAC,CAAC;EAC/D,MAAMK,QAAQ,GAAGrD,QAAQ,CAAC,MAAMmF,QAAQ,CAACrB,KAAK,CAACT,QAAQ,EAAE,EAAE,CAAC,CAAC;EAC7D,MAAMI,SAAS,GAAGzD,QAAQ,CAAC,MAAMmF,QAAQ,CAACrB,KAAK,CAACL,SAAS,EAAE,EAAE,CAAC,CAAC;EAC/D,MAAM2B,QAAQ,GAAGpF,QAAQ,CAAC,MAAM,CAACsC,GAAG,CAAC4B,KAAK,GAAGzB,GAAG,CAACyB,KAAK,IAAIxB,IAAI,CAACwB,KAAK,CAAC;EACrE,MAAMlC,QAAQ,GAAG5B,KAAK,CAAC0D,KAAK,EAAE,UAAU,CAAC;EAEzC,MAAMnB,UAAU,GAAG3C,QAAQ,CAAC,MAAM8D,KAAK,CAAC1B,KAAK,IAAI0B,KAAK,CAAC9B,QAAQ,GAAGa,SAAS,GAAGiB,KAAK,CAACnB,UAAU,IAAImB,KAAK,CAACR,KAAK,CAAC;EAC9G,MAAMC,UAAU,GAAGvD,QAAQ,CAAC,MAAM8D,KAAK,CAAC1B,KAAK,IAAI0B,KAAK,CAAC9B,QAAQ,GAAGa,SAAS,GAAGiB,KAAK,CAACP,UAAU,IAAIO,KAAK,CAACR,KAAK,CAAC;EAC9G,MAAME,cAAc,GAAGxD,QAAQ,CAAC,MAAM8D,KAAK,CAAC1B,KAAK,IAAI0B,KAAK,CAAC9B,QAAQ,GAAGa,SAAS,GAAGiB,KAAK,CAACN,cAAc,IAAIM,KAAK,CAACR,KAAK,CAAC;EAEtH,MAAM+B,YAAY,GAAGlF,UAAU,CAAC,KAAK,CAAC;EAEtC,MAAMmF,WAAW,GAAGnF,UAAU,CAAC,CAAC,CAAC;EACjC,MAAMoF,iBAAiB,GAAGrF,GAAG,EAA4B;EACzD,MAAMsF,cAAc,GAAGtF,GAAG,EAA2B;EAErD,SAASuF,cAAcA,CAAE5E,CAA0B,EAAU;IAC3D,MAAMG,QAAQ,GAAG8C,KAAK,CAAC/C,SAAS,KAAK,UAAU;IAC/C,MAAM2E,KAAK,GAAG1E,QAAQ,GAAG,KAAK,GAAG,MAAM;IACvC,MAAMa,MAAM,GAAGb,QAAQ,GAAG,QAAQ,GAAG,OAAO;IAC5C,MAAMY,QAAQ,GAAGZ,QAAQ,GAAG,SAAS,GAAG,SAAS;IAEjD,MAAM;MACJ,CAAC0E,KAAK,GAAGC,UAAU;MACnB,CAAC9D,MAAM,GAAG+D;IACZ,CAAC,GAAGL,iBAAiB,CAACrB,KAAK,EAAE2B,GAAG,CAAC3E,qBAAqB,EAAE;IACxD,MAAM4E,WAAW,GAAGnE,WAAW,CAACd,CAAC,EAAEe,QAAQ,CAAC;;IAE5C;IACA,IAAImE,QAAQ,GAAG9B,IAAI,CAACxB,GAAG,CAACwB,IAAI,CAAC3B,GAAG,CAAC,CAACwD,WAAW,GAAGH,UAAU,GAAGL,WAAW,CAACpB,KAAK,IAAI0B,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;IAE1G,IAAI5E,QAAQ,GAAGkE,YAAY,CAAChB,KAAK,GAAGgB,YAAY,CAAChB,KAAK,KAAKc,KAAK,CAACd,KAAK,EAAE6B,QAAQ,GAAG,CAAC,GAAGA,QAAQ;IAE/F,OAAO5B,UAAU,CAAC1B,GAAG,CAACyB,KAAK,GAAG6B,QAAQ,IAAIzD,GAAG,CAAC4B,KAAK,GAAGzB,GAAG,CAACyB,KAAK,CAAC,CAAC;EACnE;EAEA,MAAM8B,UAAU,GAAInF,CAA0B,IAAK;IACjDiE,WAAW,CAAC;MAAEZ,KAAK,EAAEuB,cAAc,CAAC5E,CAAC;IAAE,CAAC,CAAC;IAEzCwE,YAAY,CAACnB,KAAK,GAAG,KAAK;IAC1BoB,WAAW,CAACpB,KAAK,GAAG,CAAC;EACvB,CAAC;EAED,MAAM+B,WAAW,GAAIpF,CAA0B,IAAK;IAClD2E,cAAc,CAACtB,KAAK,GAAGa,cAAc,CAAClE,CAAC,CAAC;IAExC,IAAI,CAAC2E,cAAc,CAACtB,KAAK,EAAE;IAE3BsB,cAAc,CAACtB,KAAK,CAACgC,KAAK,EAAE;IAC5Bb,YAAY,CAACnB,KAAK,GAAG,IAAI;IAEzB,IAAIsB,cAAc,CAACtB,KAAK,CAACiC,QAAQ,CAACtF,CAAC,CAACuF,MAAM,CAAS,EAAE;MACnDd,WAAW,CAACpB,KAAK,GAAGtD,SAAS,CAACC,CAAC,EAAE2E,cAAc,CAACtB,KAAK,EAAEJ,KAAK,CAAC/C,SAAS,CAAC;IACzE,CAAC,MAAM;MACLuE,WAAW,CAACpB,KAAK,GAAG,CAAC;MACrBW,YAAY,CAAC;QAAEX,KAAK,EAAEuB,cAAc,CAAC5E,CAAC;MAAE,CAAC,CAAC;IAC5C;IAEA+D,aAAa,CAAC;MAAEV,KAAK,EAAEuB,cAAc,CAAC5E,CAAC;IAAE,CAAC,CAAC;EAC7C,CAAC;EAED,MAAMwF,mBAAmB,GAAG;IAAEC,OAAO,EAAE,IAAI;IAAEC,OAAO,EAAE;EAAK,CAAC;EAE5D,SAASC,WAAWA,CAAE3F,CAA0B,EAAE;IAChDgE,YAAY,CAAC;MAAEX,KAAK,EAAEuB,cAAc,CAAC5E,CAAC;IAAE,CAAC,CAAC;EAC5C;EAEA,SAAS4F,eAAeA,CAAE5F,CAAa,EAAE;IACvCA,CAAC,CAAC6F,eAAe,EAAE;IACnB7F,CAAC,CAAC8F,cAAc,EAAE;IAElBX,UAAU,CAACnF,CAAC,CAAC;IAEb+F,MAAM,CAACC,mBAAmB,CAAC,WAAW,EAAEL,WAAW,EAAEH,mBAAmB,CAAC;IACzEO,MAAM,CAACC,mBAAmB,CAAC,SAAS,EAAEJ,eAAe,CAAC;EACxD;EAEA,SAASK,gBAAgBA,CAAEjG,CAAa,EAAE;IACxCmF,UAAU,CAACnF,CAAC,CAAC;IAEb+F,MAAM,CAACC,mBAAmB,CAAC,WAAW,EAAEL,WAAW,EAAEH,mBAAmB,CAAC;IACzExF,CAAC,CAACuF,MAAM,EAAES,mBAAmB,CAAC,UAAU,EAAEC,gBAAgB,CAAkB;EAC9E;EAEA,SAASC,kBAAkBA,CAAElG,CAAa,EAAE;IAC1CoF,WAAW,CAACpF,CAAC,CAAC;IAEd+F,MAAM,CAACI,gBAAgB,CAAC,WAAW,EAAER,WAAW,EAAEH,mBAAmB,CAAC;IACtExF,CAAC,CAACuF,MAAM,EAAEY,gBAAgB,CAAC,UAAU,EAAEF,gBAAgB,EAAmB;MAAER,OAAO,EAAE;IAAM,CAAC,CAAC;EAC/F;EAEA,SAASW,iBAAiBA,CAAEpG,CAAa,EAAE;IACzCA,CAAC,CAAC8F,cAAc,EAAE;IAElBV,WAAW,CAACpF,CAAC,CAAC;IAEd+F,MAAM,CAACI,gBAAgB,CAAC,WAAW,EAAER,WAAW,EAAEH,mBAAmB,CAAC;IACtEO,MAAM,CAACI,gBAAgB,CAAC,SAAS,EAAEP,eAAe,EAAE;MAAEH,OAAO,EAAE;IAAM,CAAC,CAAC;EACzE;EAEA,MAAM1E,QAAQ,GAAIsF,GAAW,IAAK;IAChC,MAAMC,UAAU,GAAG,CAACD,GAAG,GAAGzE,GAAG,CAACyB,KAAK,KAAK5B,GAAG,CAAC4B,KAAK,GAAGzB,GAAG,CAACyB,KAAK,CAAC,GAAG,GAAG;IACpE,OAAO7D,KAAK,CAAC+G,KAAK,CAACD,UAAU,CAAC,GAAG,CAAC,GAAGA,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC;EAC1D,CAAC;EAED,MAAMlE,SAAS,GAAG7C,KAAK,CAAC0D,KAAK,EAAE,WAAW,CAAC;EAC3C,MAAMuD,WAAW,GAAGrH,QAAQ,CAAS,MAAM;IACzC,IAAI,CAACiD,SAAS,CAACiB,KAAK,EAAE,OAAO,EAAE;IAE/B,IAAI,CAACJ,KAAK,CAACZ,KAAK,EAAE;MAChB,OAAOkC,QAAQ,CAAClB,KAAK,KAAKoD,QAAQ,GAAGhH,WAAW,CAAC8E,QAAQ,CAAClB,KAAK,GAAG,CAAC,CAAC,CAACqD,GAAG,CAACC,CAAC,IAAI;QAC5E,MAAMtD,KAAK,GAAGzB,GAAG,CAACyB,KAAK,GAAIsD,CAAC,GAAG9E,IAAI,CAACwB,KAAM;QAC1C,OAAO;UACLA,KAAK;UACLtC,QAAQ,EAAEA,QAAQ,CAACsC,KAAK;QAC1B,CAAC;MACH,CAAC,CAAC,GAAG,EAAE;IACT;IACA,IAAIf,KAAK,CAACsE,OAAO,CAAC3D,KAAK,CAACZ,KAAK,CAAC,EAAE,OAAOY,KAAK,CAACZ,KAAK,CAACqE,GAAG,CAACC,CAAC,KAAK;MAAEtD,KAAK,EAAEsD,CAAC;MAAE5F,QAAQ,EAAEA,QAAQ,CAAC4F,CAAC,CAAC;MAAEE,KAAK,EAAEF,CAAC,CAACG,QAAQ;IAAG,CAAC,CAAC,CAAC;IACvH,OAAOvE,MAAM,CAACwE,IAAI,CAAC9D,KAAK,CAACZ,KAAK,CAAC,CAACqE,GAAG,CAACM,GAAG,KAAK;MAC1C3D,KAAK,EAAEH,UAAU,CAAC8D,GAAG,CAAC;MACtBjG,QAAQ,EAAEA,QAAQ,CAACmC,UAAU,CAAC8D,GAAG,CAAC,CAAC;MACnCH,KAAK,EAAG5D,KAAK,CAACZ,KAAK,CAA4B2E,GAAG;IACpD,CAAC,CAAC,CAAC;EACL,CAAC,CAAC;EAEF,MAAMC,SAAS,GAAG9H,QAAQ,CAAC,MAAMqH,WAAW,CAACnD,KAAK,CAAC6D,IAAI,CAACC,KAAA;IAAA,IAAC;MAAEN;IAAM,CAAC,GAAAM,KAAA;IAAA,OAAK,CAAC,CAACN,KAAK;EAAA,EAAC,CAAC;EAEhF,MAAMO,IAAmB,GAAG;IAC1BzC,cAAc;IACdlC,KAAK,EAAElD,KAAK,CAAC0D,KAAK,EAAE,OAAO,CAAC;IAC5BE,QAAQ;IACRhC,QAAQ;IACRjB,SAAS,EAAEX,KAAK,CAAC0D,KAAK,EAAE,WAAW,CAAC;IACpCF,SAAS,EAAExD,KAAK,CAAC0D,KAAK,EAAE,WAAW,CAAC;IACpCgE,SAAS;IACT7C,UAAU;IACVC,YAAY;IACZzC,GAAG;IACHH,GAAG;IACH+C,YAAY;IACZD,QAAQ;IACR6B,iBAAiB;IACjBF,kBAAkB;IAClBM,WAAW;IACX5B,cAAc;IACd7D,QAAQ;IACRS,QAAQ,EAAEjC,KAAK,CAAC0D,KAAK,EAAE,UAAU,CAAC;IAClCoE,OAAO,EAAE9H,KAAK,CAAC0D,KAAK,EAAE,SAAS,CAAC;IAChCK,UAAU;IACVlB,SAAS;IACTqC,WAAW;IACX5C,IAAI;IACJM,SAAS;IACTL,UAAU;IACVC,UAAU,EAAExC,KAAK,CAAC0D,KAAK,EAAE,YAAY,CAAC;IACtCZ,KAAK,EAAE9C,KAAK,CAAC0D,KAAK,EAAE,OAAO,CAAC;IAC5BT,QAAQ;IACRE,UAAU;IACVgC,iBAAiB;IACjB/B,cAAc;IACdC,SAAS;IACTzC;EACF,CAAC;EAEDf,OAAO,CAACQ,aAAa,EAAEwH,IAAI,CAAC;EAE5B,OAAOA,IAAI;AACb,CAAC"}
@@ -76,7 +76,7 @@ declare const VSwitch: {
76
76
  ripple?: boolean | undefined;
77
77
  valueComparator?: typeof deepEqual | undefined;
78
78
  focused?: boolean | undefined;
79
- errorMessages?: string | readonly string[] | undefined;
79
+ errorMessages?: string | readonly string[] | null | undefined;
80
80
  maxErrors?: string | number | undefined;
81
81
  rules?: readonly ValidationRule[] | undefined;
82
82
  centerAffix?: boolean | undefined;
@@ -257,7 +257,7 @@ declare const VSwitch: {
257
257
  ripple: boolean;
258
258
  valueComparator: typeof deepEqual;
259
259
  focused: boolean;
260
- errorMessages: string | readonly string[];
260
+ errorMessages: string | readonly string[] | null;
261
261
  maxErrors: string | number;
262
262
  rules: readonly ValidationRule[];
263
263
  centerAffix: boolean;
@@ -362,7 +362,7 @@ declare const VSwitch: {
362
362
  ripple: boolean;
363
363
  valueComparator: typeof deepEqual;
364
364
  focused: boolean;
365
- errorMessages: string | readonly string[];
365
+ errorMessages: string | readonly string[] | null;
366
366
  maxErrors: string | number;
367
367
  rules: readonly ValidationRule[];
368
368
  centerAffix: boolean;
@@ -435,7 +435,7 @@ declare const VSwitch: {
435
435
  ripple: boolean;
436
436
  valueComparator: typeof deepEqual;
437
437
  focused: boolean;
438
- errorMessages: string | readonly string[];
438
+ errorMessages: string | readonly string[] | null;
439
439
  maxErrors: string | number;
440
440
  rules: readonly ValidationRule[];
441
441
  centerAffix: boolean;
@@ -540,7 +540,7 @@ declare const VSwitch: {
540
540
  ripple: boolean;
541
541
  valueComparator: typeof deepEqual;
542
542
  focused: boolean;
543
- errorMessages: string | readonly string[];
543
+ errorMessages: string | readonly string[] | null;
544
544
  maxErrors: string | number;
545
545
  rules: readonly ValidationRule[];
546
546
  centerAffix: boolean;
@@ -645,7 +645,7 @@ declare const VSwitch: {
645
645
  ripple: boolean;
646
646
  valueComparator: typeof deepEqual;
647
647
  focused: boolean;
648
- errorMessages: string | readonly string[];
648
+ errorMessages: string | readonly string[] | null;
649
649
  maxErrors: string | number;
650
650
  rules: readonly ValidationRule[];
651
651
  centerAffix: boolean;
@@ -727,7 +727,7 @@ declare const VSwitch: {
727
727
  focused: BooleanConstructor;
728
728
  'onUpdate:focused': vue.PropType<EventProp<[boolean], (args_0: boolean) => any>>;
729
729
  errorMessages: {
730
- type: vue.PropType<string | readonly string[]>;
730
+ type: vue.PropType<string | readonly string[] | null>;
731
731
  default: () => never[];
732
732
  };
733
733
  maxErrors: {
@@ -813,7 +813,7 @@ declare const VSwitch: {
813
813
  focused: BooleanConstructor;
814
814
  'onUpdate:focused': vue.PropType<EventProp<[boolean], (args_0: boolean) => any>>;
815
815
  errorMessages: {
816
- type: vue.PropType<string | readonly string[]>;
816
+ type: vue.PropType<string | readonly string[] | null>;
817
817
  default: () => never[];
818
818
  };
819
819
  maxErrors: {
@@ -39,6 +39,8 @@
39
39
  border-radius: inherit;
40
40
  line-height: 1.5;
41
41
  max-width: 100%;
42
+ display: flex;
43
+ flex-direction: column;
42
44
  }
43
45
  .v-table > .v-table__wrapper > table {
44
46
  width: 100%;
@@ -98,6 +100,7 @@
98
100
  .v-table__wrapper {
99
101
  border-radius: inherit;
100
102
  overflow: auto;
103
+ flex: 1 1 auto;
101
104
  }
102
105
 
103
106
  .v-table--has-top > .v-table__wrapper > table > tbody > tr:first-child:hover > td:first-child {
@@ -70,6 +70,8 @@
70
70
  // Do not inherit line-height
71
71
  line-height: $table-line-height
72
72
  max-width: 100%
73
+ display: flex
74
+ flex-direction: column
73
75
 
74
76
  > .v-table__wrapper
75
77
  > table
@@ -110,6 +112,7 @@
110
112
  .v-table__wrapper
111
113
  border-radius: inherit
112
114
  overflow: auto
115
+ flex: 1 1 auto
113
116
 
114
117
  // Modifiers
115
118
  .v-table--has-top
@@ -109,7 +109,7 @@ export const VTextField = genericComponent()({
109
109
  }
110
110
  }
111
111
  useRender(() => {
112
- const hasCounter = !!(slots.counter || props.counter || props.counterValue);
112
+ const hasCounter = !!(slots.counter || props.counter !== false && props.counter != null);
113
113
  const hasDetails = !!(hasCounter || slots.details);
114
114
  const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
115
115
  const [{
@@ -1 +1 @@
1
- {"version":3,"file":"VTextField.mjs","names":["VCounter","filterFieldProps","makeVFieldProps","VField","makeVInputProps","VInput","useFocus","forwardRefs","useProxiedModel","Intersect","cloneVNode","computed","nextTick","ref","callEvent","filterInputAttrs","genericComponent","propsFactory","useRender","activeTypes","makeVTextFieldProps","autofocus","Boolean","counter","Number","String","counterValue","Function","prefix","placeholder","persistentPlaceholder","persistentCounter","suffix","role","type","default","modelModifiers","Object","VTextField","name","directives","inheritAttrs","props","emits","e","focused","val","setup","_ref","attrs","emit","slots","model","isFocused","focus","blur","value","toString","length","max","maxlength","undefined","isPlainOrUnderlined","includes","variant","onIntersect","isIntersecting","entries","target","vInputRef","vFieldRef","inputRef","isActive","active","onFocus","document","activeElement","onControlMousedown","preventDefault","onControlClick","onClear","stopPropagation","onInput","el","trim","caretPosition","selectionStart","selectionEnd","hasCounter","hasDetails","details","rootAttrs","inputAttrs","modelValue","_","inputProps","filterProps","fieldProps","_createVNode","_mergeProps","$event","class","style","_ref2","id","isDisabled","isDirty","isReadonly","isValid","dirty","_ref3","fieldClass","slotProps","inputNode","_withDirectives","_resolveDirective","handler","once","_Fragment"],"sources":["../../../src/components/VTextField/VTextField.tsx"],"sourcesContent":["// Styles\nimport './VTextField.sass'\n\n// Components\nimport { VCounter } from '@/components/VCounter/VCounter'\nimport { filterFieldProps, makeVFieldProps, VField } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Utilities\nimport { cloneVNode, computed, nextTick, ref } from 'vue'\nimport { callEvent, filterInputAttrs, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VCounterSlot } from '@/components/VCounter/VCounter'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nconst activeTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month']\n\nexport const makeVTextFieldProps = propsFactory({\n autofocus: Boolean,\n counter: [Boolean, Number, String] as PropType<true | number | string>,\n counterValue: [Number, Function] as PropType<number | ((value: any) => number)>,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n suffix: String,\n role: String,\n type: {\n type: String,\n default: 'text',\n },\n modelModifiers: Object as PropType<Record<string, boolean>>,\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n}, 'VTextField')\n\nexport type VTextFieldSlots = Omit<VInputSlots & VFieldSlots, 'default'> & {\n default: never\n counter: VCounterSlot\n}\n\nexport const VTextField = genericComponent<VTextFieldSlots>()({\n name: 'VTextField',\n\n directives: { Intersect },\n\n inheritAttrs: false,\n\n props: makeVTextFieldProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value)\n : typeof props.counterValue === 'number' ? props.counterValue\n : (model.value ?? '').toString().length\n })\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength as unknown as undefined\n\n if (\n !props.counter ||\n (typeof props.counter !== 'number' &&\n typeof props.counter !== 'string')\n ) return undefined\n\n return props.counter\n })\n\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n\n function onIntersect (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[]\n ) {\n if (!props.autofocus || !isIntersecting) return\n\n (entries[0].target as HTMLInputElement)?.focus?.()\n }\n\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VField>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n activeTypes.includes(props.type) ||\n props.persistentPlaceholder ||\n isFocused.value ||\n props.active\n ))\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n\n if (e.target === inputRef.value) return\n\n onFocus()\n e.preventDefault()\n }\n function onControlClick (e: MouseEvent) {\n onFocus()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = null\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onInput (e: Event) {\n const el = e.target as HTMLInputElement\n model.value = el.value\n if (\n props.modelModifiers?.trim &&\n ['text', 'search', 'password', 'tel', 'url'].includes(props.type)\n ) {\n const caretPosition = [el.selectionStart, el.selectionEnd]\n nextTick(() => {\n el.selectionStart = caretPosition[0]\n el.selectionEnd = caretPosition[1]\n })\n }\n }\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = VInput.filterProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-text-field',\n {\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-text-field--plain-underlined': ['plain', 'underlined'].includes(props.variant),\n },\n props.class,\n ]}\n style={ props.style }\n { ...rootAttrs }\n { ...inputProps }\n centerAffix={ !isPlainOrUnderlined.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n role={ props.role }\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => {\n const inputNode = (\n <input\n ref={ inputRef }\n value={ model.value }\n onInput={ onInput }\n v-intersect={[{\n handler: onIntersect,\n }, null, ['once']]}\n autofocus={ props.autofocus }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n name={ props.name }\n placeholder={ props.placeholder }\n size={ 1 }\n type={ props.type }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n )\n\n return (\n <>\n { props.prefix && (\n <span class=\"v-text-field__prefix\">\n <span class=\"v-text-field__prefix__text\">\n { props.prefix }\n </span>\n </span>\n )}\n\n { slots.default ? (\n <div\n class={ fieldClass }\n data-no-activator=\"\"\n >\n { slots.default() }\n { inputNode }\n </div>\n ) : cloneVNode(inputNode, { class: fieldClass })}\n\n { props.suffix && (\n <span class=\"v-text-field__suffix\">\n <span class=\"v-text-field__suffix__text\">\n { props.suffix }\n </span>\n </span>\n )}\n </>\n )\n },\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ props.persistentCounter || isFocused.value }\n value={ counterValue.value }\n max={ max.value }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VTextField = InstanceType<typeof VTextField>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VTextField.mjs","names":["VCounter","filterFieldProps","makeVFieldProps","VField","makeVInputProps","VInput","useFocus","forwardRefs","useProxiedModel","Intersect","cloneVNode","computed","nextTick","ref","callEvent","filterInputAttrs","genericComponent","propsFactory","useRender","activeTypes","makeVTextFieldProps","autofocus","Boolean","counter","Number","String","counterValue","Function","prefix","placeholder","persistentPlaceholder","persistentCounter","suffix","role","type","default","modelModifiers","Object","VTextField","name","directives","inheritAttrs","props","emits","e","focused","val","setup","_ref","attrs","emit","slots","model","isFocused","focus","blur","value","toString","length","max","maxlength","undefined","isPlainOrUnderlined","includes","variant","onIntersect","isIntersecting","entries","target","vInputRef","vFieldRef","inputRef","isActive","active","onFocus","document","activeElement","onControlMousedown","preventDefault","onControlClick","onClear","stopPropagation","onInput","el","trim","caretPosition","selectionStart","selectionEnd","hasCounter","hasDetails","details","rootAttrs","inputAttrs","modelValue","_","inputProps","filterProps","fieldProps","_createVNode","_mergeProps","$event","class","style","_ref2","id","isDisabled","isDirty","isReadonly","isValid","dirty","_ref3","fieldClass","slotProps","inputNode","_withDirectives","_resolveDirective","handler","once","_Fragment"],"sources":["../../../src/components/VTextField/VTextField.tsx"],"sourcesContent":["// Styles\nimport './VTextField.sass'\n\n// Components\nimport { VCounter } from '@/components/VCounter/VCounter'\nimport { filterFieldProps, makeVFieldProps, VField } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Utilities\nimport { cloneVNode, computed, nextTick, ref } from 'vue'\nimport { callEvent, filterInputAttrs, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VCounterSlot } from '@/components/VCounter/VCounter'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nconst activeTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month']\n\nexport const makeVTextFieldProps = propsFactory({\n autofocus: Boolean,\n counter: [Boolean, Number, String],\n counterValue: [Number, Function] as PropType<number | ((value: any) => number)>,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n suffix: String,\n role: String,\n type: {\n type: String,\n default: 'text',\n },\n modelModifiers: Object as PropType<Record<string, boolean>>,\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n}, 'VTextField')\n\nexport type VTextFieldSlots = Omit<VInputSlots & VFieldSlots, 'default'> & {\n default: never\n counter: VCounterSlot\n}\n\nexport const VTextField = genericComponent<VTextFieldSlots>()({\n name: 'VTextField',\n\n directives: { Intersect },\n\n inheritAttrs: false,\n\n props: makeVTextFieldProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value)\n : typeof props.counterValue === 'number' ? props.counterValue\n : (model.value ?? '').toString().length\n })\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength as unknown as undefined\n\n if (\n !props.counter ||\n (typeof props.counter !== 'number' &&\n typeof props.counter !== 'string')\n ) return undefined\n\n return props.counter\n })\n\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n\n function onIntersect (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[]\n ) {\n if (!props.autofocus || !isIntersecting) return\n\n (entries[0].target as HTMLInputElement)?.focus?.()\n }\n\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VField>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n activeTypes.includes(props.type) ||\n props.persistentPlaceholder ||\n isFocused.value ||\n props.active\n ))\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n\n if (e.target === inputRef.value) return\n\n onFocus()\n e.preventDefault()\n }\n function onControlClick (e: MouseEvent) {\n onFocus()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = null\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onInput (e: Event) {\n const el = e.target as HTMLInputElement\n model.value = el.value\n if (\n props.modelModifiers?.trim &&\n ['text', 'search', 'password', 'tel', 'url'].includes(props.type)\n ) {\n const caretPosition = [el.selectionStart, el.selectionEnd]\n nextTick(() => {\n el.selectionStart = caretPosition[0]\n el.selectionEnd = caretPosition[1]\n })\n }\n }\n\n useRender(() => {\n const hasCounter = !!(slots.counter || (props.counter !== false && props.counter != null))\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = VInput.filterProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-text-field',\n {\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-text-field--plain-underlined': ['plain', 'underlined'].includes(props.variant),\n },\n props.class,\n ]}\n style={ props.style }\n { ...rootAttrs }\n { ...inputProps }\n centerAffix={ !isPlainOrUnderlined.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n role={ props.role }\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => {\n const inputNode = (\n <input\n ref={ inputRef }\n value={ model.value }\n onInput={ onInput }\n v-intersect={[{\n handler: onIntersect,\n }, null, ['once']]}\n autofocus={ props.autofocus }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n name={ props.name }\n placeholder={ props.placeholder }\n size={ 1 }\n type={ props.type }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n )\n\n return (\n <>\n { props.prefix && (\n <span class=\"v-text-field__prefix\">\n <span class=\"v-text-field__prefix__text\">\n { props.prefix }\n </span>\n </span>\n )}\n\n { slots.default ? (\n <div\n class={ fieldClass }\n data-no-activator=\"\"\n >\n { slots.default() }\n { inputNode }\n </div>\n ) : cloneVNode(inputNode, { class: fieldClass })}\n\n { props.suffix && (\n <span class=\"v-text-field__suffix\">\n <span class=\"v-text-field__suffix__text\">\n { props.suffix }\n </span>\n </span>\n )}\n </>\n )\n },\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ props.persistentCounter || isFocused.value }\n value={ counterValue.value }\n max={ max.value }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VTextField = InstanceType<typeof VTextField>\n"],"mappings":"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"}