@vuetify/nightly 4.0.0-dev-20230419.0 → 4.0.0-dev-20230421.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/CHANGELOG.md +7 -2
  2. package/dist/json/attributes.json +172 -108
  3. package/dist/json/importMap.json +34 -34
  4. package/dist/json/tags.json +16 -0
  5. package/dist/json/web-types.json +522 -220
  6. package/dist/vuetify-labs.css +293 -130
  7. package/dist/vuetify-labs.d.ts +620 -171
  8. package/dist/vuetify-labs.esm.js +867 -186
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +867 -185
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +166 -3
  13. package/dist/vuetify.d.ts +577 -160
  14. package/dist/vuetify.esm.js +809 -138
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +809 -137
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +802 -736
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/adapters/date-adapter.mjs +2 -0
  22. package/lib/adapters/date-adapter.mjs.map +1 -0
  23. package/lib/adapters/vuetify.mjs +399 -0
  24. package/lib/adapters/vuetify.mjs.map +1 -0
  25. package/lib/blueprints/index.d.ts +34 -0
  26. package/lib/blueprints/md1.d.ts +34 -0
  27. package/lib/blueprints/md2.d.ts +34 -0
  28. package/lib/blueprints/md3.d.ts +34 -0
  29. package/lib/components/VAppBar/VAppBar.mjs +62 -10
  30. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  31. package/lib/components/VAppBar/index.d.ts +26 -0
  32. package/lib/components/VAutocomplete/VAutocomplete.css +9 -0
  33. package/lib/components/VAutocomplete/VAutocomplete.mjs +50 -6
  34. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  35. package/lib/components/VAutocomplete/VAutocomplete.sass +10 -0
  36. package/lib/components/VAutocomplete/index.d.ts +29 -17
  37. package/lib/components/VBtn/_mixins.scss +1 -1
  38. package/lib/components/VCard/VCard.mjs.map +1 -1
  39. package/lib/components/VCard/index.d.ts +21 -16
  40. package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
  41. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  42. package/lib/components/VCheckbox/index.d.ts +22 -1
  43. package/lib/components/VCombobox/VCombobox.css +1 -1
  44. package/lib/components/VCombobox/VCombobox.mjs +6 -4
  45. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  46. package/lib/components/VCombobox/VCombobox.sass +1 -1
  47. package/lib/components/VCombobox/index.d.ts +29 -17
  48. package/lib/components/VField/index.d.ts +6 -0
  49. package/lib/components/VFileInput/VFileInput.mjs +13 -17
  50. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  51. package/lib/components/VFileInput/index.d.ts +68 -23
  52. package/lib/components/VInput/VInput.mjs +14 -7
  53. package/lib/components/VInput/VInput.mjs.map +1 -1
  54. package/lib/components/VInput/index.d.ts +22 -1
  55. package/lib/components/VOverlay/locationStrategies.mjs +9 -4
  56. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  57. package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -2
  58. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  59. package/lib/components/VRadioGroup/index.d.ts +22 -1
  60. package/lib/components/VRangeSlider/VRangeSlider.mjs +33 -22
  61. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  62. package/lib/components/VRangeSlider/index.d.ts +39 -6
  63. package/lib/components/VSelect/VSelect.mjs +6 -0
  64. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  65. package/lib/components/VSelect/index.d.ts +32 -17
  66. package/lib/components/VSlider/VSlider.mjs +33 -15
  67. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  68. package/lib/components/VSlider/index.d.ts +39 -6
  69. package/lib/components/VSlider/slider.mjs +47 -24
  70. package/lib/components/VSlider/slider.mjs.map +1 -1
  71. package/lib/components/VSwitch/VSwitch.mjs +5 -3
  72. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  73. package/lib/components/VSwitch/index.d.ts +43 -1
  74. package/lib/components/VTextField/VTextField.mjs +4 -12
  75. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  76. package/lib/components/VTextField/index.d.ts +70 -22
  77. package/lib/components/VTextarea/VTextarea.mjs +4 -12
  78. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  79. package/lib/components/VTextarea/index.d.ts +61 -22
  80. package/lib/components/VToolbar/VToolbar.css +3 -1
  81. package/lib/components/VToolbar/VToolbar.sass +3 -1
  82. package/lib/components/VValidation/index.d.ts +10 -1
  83. package/lib/components/index.d.ts +525 -150
  84. package/lib/composables/date.mjs +39 -0
  85. package/lib/composables/date.mjs.map +1 -0
  86. package/lib/composables/focus.mjs +3 -2
  87. package/lib/composables/focus.mjs.map +1 -1
  88. package/lib/composables/index.mjs +1 -0
  89. package/lib/composables/index.mjs.map +1 -1
  90. package/lib/composables/items.mjs +7 -2
  91. package/lib/composables/items.mjs.map +1 -1
  92. package/lib/composables/scroll.mjs +3 -0
  93. package/lib/composables/scroll.mjs.map +1 -1
  94. package/lib/entry-bundler.mjs +1 -1
  95. package/lib/framework.mjs +8 -3
  96. package/lib/framework.mjs.map +1 -1
  97. package/lib/iconsets/mdi-svg.mjs +2 -2
  98. package/lib/iconsets/mdi-svg.mjs.map +1 -1
  99. package/lib/index.d.ts +52 -10
  100. package/lib/labs/VDataTable/VDataTable.mjs +2 -2
  101. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  102. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
  103. package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
  104. package/lib/labs/VDataTable/VDataTableRows.mjs +52 -44
  105. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  106. package/lib/labs/VDataTable/VDataTableServer.mjs +2 -1
  107. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  108. package/lib/labs/VDataTable/VDataTableVirtual.mjs +0 -1
  109. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  110. package/lib/labs/VDataTable/composables/options.mjs +2 -1
  111. package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
  112. package/lib/labs/VDataTable/index.d.ts +44 -11
  113. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs +1 -0
  114. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
  115. package/lib/labs/VSkeletonLoader/index.d.ts +9 -9
  116. package/lib/labs/components.d.ts +53 -20
  117. package/lib/styles/main.css +152 -0
  118. package/lib/styles/settings/_utilities.scss +11 -1
  119. package/lib/util/helpers.mjs +4 -0
  120. package/lib/util/helpers.mjs.map +1 -1
  121. package/package.json +2 -2
@@ -3,7 +3,7 @@
3
3
  import { makeElevationProps } from "../../composables/elevation.mjs";
4
4
  import { makeRoundedProps } from "../../composables/rounded.mjs";
5
5
  import { useRtl } from "../../composables/locale.mjs"; // Utilities
6
- import { clamp, createRange, getDecimals, propsFactory } from "../../util/index.mjs";
6
+ import { clamp, createRange, propsFactory } from "../../util/index.mjs";
7
7
  import { computed, provide, ref, toRef } from 'vue';
8
8
 
9
9
  // Types
@@ -74,11 +74,36 @@ export const makeSliderProps = propsFactory({
74
74
  elevation: 2
75
75
  })
76
76
  }, 'slider');
77
+ export const useSteps = props => {
78
+ const min = computed(() => parseFloat(props.min));
79
+ const max = computed(() => parseFloat(props.max));
80
+ const step = computed(() => +props.step > 0 ? parseFloat(props.step) : 0);
81
+ const decimals = computed(() => {
82
+ const trimmedStep = step.value.toString().trim();
83
+ return trimmedStep.includes('.') ? trimmedStep.length - trimmedStep.indexOf('.') - 1 : 0;
84
+ });
85
+ function roundValue(value) {
86
+ if (step.value <= 0) return value;
87
+ const clamped = clamp(value, min.value, max.value);
88
+ const offset = min.value % step.value;
89
+ const newValue = Math.round((clamped - offset) / step.value) * step.value + offset;
90
+ return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value));
91
+ }
92
+ return {
93
+ min,
94
+ max,
95
+ step,
96
+ decimals,
97
+ roundValue
98
+ };
99
+ };
77
100
  export const useSlider = _ref => {
78
101
  let {
79
102
  props,
80
- handleSliderMouseUp,
81
- handleMouseMove,
103
+ steps,
104
+ onSliderStart,
105
+ onSliderMove,
106
+ onSliderEnd,
82
107
  getActiveThumb
83
108
  } = _ref;
84
109
  const {
@@ -92,10 +117,13 @@ export const useSlider = _ref => {
92
117
  }
93
118
  return hd;
94
119
  });
95
- const min = computed(() => parseFloat(props.min));
96
- const max = computed(() => parseFloat(props.max));
97
- const step = computed(() => +props.step > 0 ? parseFloat(props.step) : 0);
98
- const decimals = computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));
120
+ const {
121
+ min,
122
+ max,
123
+ step,
124
+ decimals,
125
+ roundValue
126
+ } = steps;
99
127
  const thumbSize = computed(() => parseInt(props.thumbSize, 10));
100
128
  const tickSize = computed(() => parseInt(props.tickSize, 10));
101
129
  const trackSize = computed(() => parseInt(props.trackSize, 10));
@@ -109,13 +137,6 @@ export const useSlider = _ref => {
109
137
  const startOffset = ref(0);
110
138
  const trackContainerRef = ref();
111
139
  const activeThumbRef = ref();
112
- function roundValue(value) {
113
- if (step.value <= 0) return value;
114
- const clamped = clamp(value, min.value, max.value);
115
- const offset = min.value % step.value;
116
- const newValue = Math.round((clamped - offset) / step.value) * step.value + offset;
117
- return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value));
118
- }
119
140
  function parseMouseMove(e) {
120
141
  const vertical = props.direction === 'vertical';
121
142
  const start = vertical ? 'top' : 'left';
@@ -132,14 +153,11 @@ export const useSlider = _ref => {
132
153
  if (vertical || horizontalDirection.value === 'rtl') clickPos = 1 - clickPos;
133
154
  return roundValue(min.value + clickPos * (max.value - min.value));
134
155
  }
135
- let thumbMoved = false;
136
156
  const handleStop = e => {
137
- if (!thumbMoved) {
138
- startOffset.value = 0;
139
- handleSliderMouseUp(parseMouseMove(e));
140
- }
157
+ onSliderEnd({
158
+ value: parseMouseMove(e)
159
+ });
141
160
  mousePressed.value = false;
142
- thumbMoved = false;
143
161
  startOffset.value = 0;
144
162
  };
145
163
  const handleStart = e => {
@@ -148,20 +166,25 @@ export const useSlider = _ref => {
148
166
  activeThumbRef.value.focus();
149
167
  mousePressed.value = true;
150
168
  if (activeThumbRef.value.contains(e.target)) {
151
- thumbMoved = true;
152
169
  startOffset.value = getOffset(e, activeThumbRef.value, props.direction);
153
170
  } else {
154
171
  startOffset.value = 0;
155
- handleMouseMove(parseMouseMove(e));
172
+ onSliderMove({
173
+ value: parseMouseMove(e)
174
+ });
156
175
  }
176
+ onSliderStart({
177
+ value: parseMouseMove(e)
178
+ });
157
179
  };
158
180
  const moveListenerOptions = {
159
181
  passive: true,
160
182
  capture: true
161
183
  };
162
184
  function onMouseMove(e) {
163
- thumbMoved = true;
164
- handleMouseMove(parseMouseMove(e));
185
+ onSliderMove({
186
+ value: parseMouseMove(e)
187
+ });
165
188
  }
166
189
  function onSliderMouseUp(e) {
167
190
  e.stopPropagation();
@@ -1 +1 @@
1
- {"version":3,"file":"slider.mjs","names":["makeElevationProps","makeRoundedProps","useRtl","clamp","createRange","getDecimals","propsFactory","computed","provide","ref","toRef","VSliderSymbol","Symbol","for","getOffset","e","el","direction","vertical","rect","getBoundingClientRect","touch","touches","clientY","top","height","clientX","left","width","getPosition","position","length","changedTouches","makeSliderProps","disabled","Boolean","error","readonly","max","type","Number","String","default","min","step","thumbColor","thumbLabel","undefined","validator","v","thumbSize","showTicks","ticks","Array","Object","tickSize","color","trackColor","trackFillColor","trackSize","includes","reverse","elevation","useSlider","_ref","props","handleSliderMouseUp","handleMouseMove","getActiveThumb","isRtl","isReversed","horizontalDirection","hd","value","parseFloat","decimals","Math","parseInt","numTicks","mousePressed","startOffset","trackContainerRef","activeThumbRef","roundValue","clamped","offset","newValue","round","toFixed","parseMouseMove","start","trackStart","trackLength","$el","clickOffset","clickPos","thumbMoved","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 { makeRoundedProps } from '@/composables/rounded'\nimport { useRtl } from '@/composables/locale'\n\n// Utilities\nimport { clamp, createRange, getDecimals, propsFactory } from '@/util'\nimport { computed, provide, ref, toRef } from 'vue'\n\n// Types\nimport type { ExtractPropTypes, InjectionKey, PropType, Ref } from 'vue'\nimport type { VSliderTrack } from './VSliderTrack'\n\ntype 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 | 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 | 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<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: Boolean,\n error: Boolean,\n readonly: Boolean,\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<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\nexport const useSlider = ({\n props,\n handleSliderMouseUp,\n handleMouseMove,\n getActiveThumb,\n}: {\n props: SliderProps\n handleSliderMouseUp: (v: number) => void\n handleMouseMove: (v: number) => 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 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 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 = ref(false)\n\n const startOffset = ref(0)\n const trackContainerRef = ref<VSliderTrack | undefined>()\n const activeThumbRef = ref<HTMLElement | undefined>()\n\n function roundValue (value: number) {\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 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 let thumbMoved = false\n\n const handleStop = (e: MouseEvent | TouchEvent) => {\n if (!thumbMoved) {\n startOffset.value = 0\n handleSliderMouseUp(parseMouseMove(e))\n }\n\n mousePressed.value = false\n thumbMoved = 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 thumbMoved = true\n startOffset.value = getOffset(e, activeThumbRef.value, props.direction)\n } else {\n startOffset.value = 0\n handleMouseMove(parseMouseMove(e))\n }\n }\n\n const moveListenerOptions = { passive: true, capture: true }\n\n function onMouseMove (e: MouseEvent | TouchEvent) {\n thumbMoved = true\n handleMouseMove(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","makeRoundedProps","useRtl","clamp","createRange","propsFactory","computed","provide","ref","toRef","VSliderSymbol","Symbol","for","getOffset","e","el","direction","vertical","rect","getBoundingClientRect","touch","touches","clientY","top","height","clientX","left","width","getPosition","position","length","changedTouches","makeSliderProps","disabled","Boolean","error","readonly","max","type","Number","String","default","min","step","thumbColor","thumbLabel","undefined","validator","v","thumbSize","showTicks","ticks","Array","Object","tickSize","color","trackColor","trackFillColor","trackSize","includes","reverse","elevation","useSteps","props","parseFloat","decimals","trimmedStep","value","toString","trim","indexOf","roundValue","clamped","offset","newValue","Math","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","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 { makeRoundedProps } from '@/composables/rounded'\nimport { useRtl } from '@/composables/locale'\n\n// Utilities\nimport { clamp, createRange, propsFactory } from '@/util'\nimport { computed, provide, ref, toRef } from 'vue'\n\n// Types\nimport type { ExtractPropTypes, InjectionKey, PropType, Ref } from 'vue'\nimport type { VSliderTrack } from './VSliderTrack'\n\ntype 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 | 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 | 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<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: Boolean,\n error: Boolean,\n readonly: Boolean,\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<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(() => {\n const trimmedStep = step.value.toString().trim()\n return trimmedStep.includes('.')\n ? (trimmedStep.length - trimmedStep.indexOf('.') - 1)\n : 0\n })\n\n function roundValue (value: number) {\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 = ref(false)\n\n const startOffset = ref(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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"}
@@ -4,7 +4,7 @@ import "./VSwitch.css";
4
4
 
5
5
  // Components
6
6
  import { makeSelectionControlProps, VSelectionControl } from "../VSelectionControl/VSelectionControl.mjs";
7
- import { filterInputProps, makeVInputProps, VInput } from "../VInput/VInput.mjs";
7
+ import { makeVInputProps, VInput } from "../VInput/VInput.mjs";
8
8
  import { VProgressCircular } from "../VProgressCircular/index.mjs"; // Composables
9
9
  import { LoaderSlot, useLoader } from "../../composables/loader.mjs";
10
10
  import { useFocus } from "../../composables/focus.mjs";
@@ -57,10 +57,12 @@ export const VSwitch = genericComponent()({
57
57
  }
58
58
  useRender(() => {
59
59
  const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
60
- const [inputProps, _1] = filterInputProps(props);
60
+ const [inputProps, _1] = VInput.filterProps(props);
61
61
  const [controlProps, _2] = VSelectionControl.filterProps(props);
62
62
  const control = ref();
63
- function onClick() {
63
+ function onClick(e) {
64
+ e.stopPropagation();
65
+ e.preventDefault();
64
66
  control.value?.input?.click();
65
67
  }
66
68
  return _createVNode(VInput, _mergeProps({
@@ -1 +1 @@
1
- {"version":3,"file":"VSwitch.mjs","names":["makeSelectionControlProps","VSelectionControl","filterInputProps","makeVInputProps","VInput","VProgressCircular","LoaderSlot","useLoader","useFocus","useProxiedModel","computed","ref","filterInputAttrs","genericComponent","getUid","useRender","VSwitch","name","inheritAttrs","props","indeterminate","Boolean","inset","flat","loading","type","String","default","emits","focused","update:modelValue","val","setup","_ref","attrs","slots","model","loaderClasses","isFocused","focus","blur","loaderColor","color","uid","id","onChange","value","inputAttrs","controlAttrs","inputProps","_1","controlProps","_2","filterProps","control","onClick","input","click","_createVNode","_mergeProps","_ref2","messagesId","isDisabled","isReadonly","isValid","$event","undefined","_ref3","textColorClasses","textColorStyles","slotProps","loader","isActive"],"sources":["../../../src/components/VSwitch/VSwitch.tsx"],"sourcesContent":["// Styles\nimport './VSwitch.sass'\n\n// Components\nimport { makeSelectionControlProps, VSelectionControl } from '@/components/VSelectionControl/VSelectionControl'\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VProgressCircular } from '@/components/VProgressCircular'\n\n// Composables\nimport { LoaderSlot, useLoader } from '@/composables/loader'\nimport { useFocus } from '@/composables/focus'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utility\nimport { computed, ref } from 'vue'\nimport { filterInputAttrs, genericComponent, getUid, useRender } from '@/util'\n\n// Types\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { VSelectionControlSlots } from '@/components/VSelectionControl/VSelectionControl'\n\nexport type VSwitchSlots = VInputSlots & VSelectionControlSlots\n\nexport const VSwitch = genericComponent<VSwitchSlots>()({\n name: 'VSwitch',\n\n inheritAttrs: false,\n\n props: {\n indeterminate: Boolean,\n inset: Boolean,\n flat: Boolean,\n loading: {\n type: [Boolean, String],\n default: false,\n },\n\n ...makeVInputProps(),\n ...makeSelectionControlProps(),\n },\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': () => true,\n 'update:indeterminate': (val: boolean) => true,\n },\n\n setup (props, { attrs, slots }) {\n const indeterminate = useProxiedModel(props, 'indeterminate')\n const model = useProxiedModel(props, 'modelValue')\n const { loaderClasses } = useLoader(props)\n const { isFocused, focus, blur } = useFocus(props)\n\n const loaderColor = computed(() => {\n return typeof props.loading === 'string' && props.loading !== ''\n ? props.loading\n : props.color\n })\n\n const uid = getUid()\n const id = computed(() => props.id || `switch-${uid}`)\n\n function onChange () {\n if (indeterminate.value) {\n indeterminate.value = false\n }\n }\n\n useRender(() => {\n const [inputAttrs, controlAttrs] = filterInputAttrs(attrs)\n const [inputProps, _1] = filterInputProps(props)\n const [controlProps, _2] = VSelectionControl.filterProps(props)\n const control = ref<VSelectionControl>()\n\n function onClick () {\n control.value?.input?.click()\n }\n\n return (\n <VInput\n class={[\n 'v-switch',\n { 'v-switch--inset': props.inset },\n { 'v-switch--indeterminate': indeterminate.value },\n loaderClasses.value,\n ]}\n { ...inputAttrs }\n { ...inputProps }\n id={ id.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n messagesId,\n isDisabled,\n isReadonly,\n isValid,\n }) => (\n <VSelectionControl\n ref={ control }\n { ...controlProps }\n v-model={ model.value }\n id={ id.value }\n aria-describedby={ messagesId.value }\n type=\"checkbox\"\n onUpdate:modelValue={ onChange }\n aria-checked={ indeterminate.value ? 'mixed' : undefined }\n disabled={ isDisabled.value }\n readonly={ isReadonly.value }\n onFocus={ focus }\n onBlur={ blur }\n { ...controlAttrs }\n >\n {{\n ...slots,\n default: () => (<div class=\"v-switch__track\" onClick={ onClick }></div>),\n input: ({ textColorClasses, textColorStyles }) => (\n <div\n class={[\n 'v-switch__thumb',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n >\n { props.loading && (\n <LoaderSlot\n name=\"v-switch\"\n active\n color={ isValid.value === false ? undefined : loaderColor.value }\n >\n { slotProps => (\n slots.loader\n ? slots.loader(slotProps)\n : (\n <VProgressCircular\n active={ slotProps.isActive }\n color={ slotProps.color }\n indeterminate\n size=\"16\"\n width=\"2\"\n />\n )\n )}\n </LoaderSlot>\n )}\n </div>\n ),\n }}\n </VSelectionControl>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n\nexport type VSwitch = InstanceType<typeof VSwitch>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VSwitch.mjs","names":["makeSelectionControlProps","VSelectionControl","makeVInputProps","VInput","VProgressCircular","LoaderSlot","useLoader","useFocus","useProxiedModel","computed","ref","filterInputAttrs","genericComponent","getUid","useRender","VSwitch","name","inheritAttrs","props","indeterminate","Boolean","inset","flat","loading","type","String","default","emits","focused","update:modelValue","val","setup","_ref","attrs","slots","model","loaderClasses","isFocused","focus","blur","loaderColor","color","uid","id","onChange","value","inputAttrs","controlAttrs","inputProps","_1","filterProps","controlProps","_2","control","onClick","e","stopPropagation","preventDefault","input","click","_createVNode","_mergeProps","_ref2","messagesId","isDisabled","isReadonly","isValid","$event","undefined","_ref3","textColorClasses","textColorStyles","slotProps","loader","isActive"],"sources":["../../../src/components/VSwitch/VSwitch.tsx"],"sourcesContent":["// Styles\nimport './VSwitch.sass'\n\n// Components\nimport { makeSelectionControlProps, VSelectionControl } from '@/components/VSelectionControl/VSelectionControl'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VProgressCircular } from '@/components/VProgressCircular'\n\n// Composables\nimport { LoaderSlot, useLoader } from '@/composables/loader'\nimport { useFocus } from '@/composables/focus'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utility\nimport { computed, ref } from 'vue'\nimport { filterInputAttrs, genericComponent, getUid, useRender } from '@/util'\n\n// Types\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { VSelectionControlSlots } from '@/components/VSelectionControl/VSelectionControl'\nimport type { LoaderSlotProps } from '@/composables/loader'\nimport type { MakeSlots } from '@/util'\n\nexport type VSwitchSlots =\n & VInputSlots\n & VSelectionControlSlots\n & MakeSlots<{ loader: [LoaderSlotProps] }>\n\nexport const VSwitch = genericComponent<VSwitchSlots>()({\n name: 'VSwitch',\n\n inheritAttrs: false,\n\n props: {\n indeterminate: Boolean,\n inset: Boolean,\n flat: Boolean,\n loading: {\n type: [Boolean, String],\n default: false,\n },\n\n ...makeVInputProps(),\n ...makeSelectionControlProps(),\n },\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': () => true,\n 'update:indeterminate': (val: boolean) => true,\n },\n\n setup (props, { attrs, slots }) {\n const indeterminate = useProxiedModel(props, 'indeterminate')\n const model = useProxiedModel(props, 'modelValue')\n const { loaderClasses } = useLoader(props)\n const { isFocused, focus, blur } = useFocus(props)\n\n const loaderColor = computed(() => {\n return typeof props.loading === 'string' && props.loading !== ''\n ? props.loading\n : props.color\n })\n\n const uid = getUid()\n const id = computed(() => props.id || `switch-${uid}`)\n\n function onChange () {\n if (indeterminate.value) {\n indeterminate.value = false\n }\n }\n\n useRender(() => {\n const [inputAttrs, controlAttrs] = filterInputAttrs(attrs)\n const [inputProps, _1] = VInput.filterProps(props)\n const [controlProps, _2] = VSelectionControl.filterProps(props)\n const control = ref<VSelectionControl>()\n\n function onClick (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n control.value?.input?.click()\n }\n\n return (\n <VInput\n class={[\n 'v-switch',\n { 'v-switch--inset': props.inset },\n { 'v-switch--indeterminate': indeterminate.value },\n loaderClasses.value,\n ]}\n { ...inputAttrs }\n { ...inputProps }\n id={ id.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n messagesId,\n isDisabled,\n isReadonly,\n isValid,\n }) => (\n <VSelectionControl\n ref={ control }\n { ...controlProps }\n v-model={ model.value }\n id={ id.value }\n aria-describedby={ messagesId.value }\n type=\"checkbox\"\n onUpdate:modelValue={ onChange }\n aria-checked={ indeterminate.value ? 'mixed' : undefined }\n disabled={ isDisabled.value }\n readonly={ isReadonly.value }\n onFocus={ focus }\n onBlur={ blur }\n { ...controlAttrs }\n >\n {{\n ...slots,\n default: () => (<div class=\"v-switch__track\" onClick={ onClick }></div>),\n input: ({ textColorClasses, textColorStyles }) => (\n <div\n class={[\n 'v-switch__thumb',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n >\n { props.loading && (\n <LoaderSlot\n name=\"v-switch\"\n active\n color={ isValid.value === false ? undefined : loaderColor.value }\n >\n { slotProps => (\n slots.loader\n ? slots.loader(slotProps)\n : (\n <VProgressCircular\n active={ slotProps.isActive }\n color={ slotProps.color }\n indeterminate\n size=\"16\"\n width=\"2\"\n />\n )\n )}\n </LoaderSlot>\n )}\n </div>\n ),\n }}\n </VSelectionControl>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n\nexport type VSwitch = InstanceType<typeof VSwitch>\n"],"mappings":"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"}
@@ -42,6 +42,11 @@ interface VInputSlot {
42
42
  validate: () => void;
43
43
  }
44
44
 
45
+ interface LoaderSlotProps {
46
+ color: string | undefined;
47
+ isActive: boolean;
48
+ }
49
+
45
50
  declare const VSwitch: {
46
51
  new (...args: any[]): {
47
52
  $: vue.ComponentInternalInstance;
@@ -64,6 +69,7 @@ declare const VSwitch: {
64
69
  errorMessages: string | string[];
65
70
  maxErrors: string | number;
66
71
  rules: ValidationRule[];
72
+ persistentHint: boolean;
67
73
  valueComparator: typeof deepEqual;
68
74
  }> & Omit<{
69
75
  flat: boolean;
@@ -83,6 +89,7 @@ declare const VSwitch: {
83
89
  errorMessages: string | string[];
84
90
  maxErrors: string | number;
85
91
  rules: ValidationRule[];
92
+ persistentHint: boolean;
86
93
  valueComparator: typeof deepEqual;
87
94
  } & {
88
95
  type?: string | undefined;
@@ -97,8 +104,10 @@ declare const VSwitch: {
97
104
  appendIcon?: IconValue | undefined;
98
105
  'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
99
106
  'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
107
+ 'onUpdate:focused'?: EventProp<[FocusEvent], (args_0: FocusEvent) => any> | undefined;
100
108
  validateOn?: "input" | "blur" | "submit" | undefined;
101
109
  validationValue?: any;
110
+ hint?: string | undefined;
102
111
  hideDetails?: boolean | "auto" | undefined;
103
112
  falseIcon?: IconValue | undefined;
104
113
  trueIcon?: IconValue | undefined;
@@ -115,6 +124,7 @@ declare const VSwitch: {
115
124
  props: Record<string, unknown>;
116
125
  }) => vue.VNodeChild) | undefined;
117
126
  input?: ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
127
+ loader?: ((args_0: LoaderSlotProps) => vue.VNodeChild) | undefined;
118
128
  };
119
129
  $slots?: {
120
130
  default?: (((args_0: VInputSlot) => vue.VNodeChild) & (() => vue.VNodeChild)) | undefined;
@@ -126,6 +136,7 @@ declare const VSwitch: {
126
136
  props: Record<string, unknown>;
127
137
  }) => vue.VNodeChild) | undefined;
128
138
  input?: ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
139
+ loader?: ((args_0: LoaderSlotProps) => vue.VNodeChild) | undefined;
129
140
  } | undefined;
130
141
  'v-slots'?: {
131
142
  default?: false | (((args_0: VInputSlot) => vue.VNodeChild) & (() => vue.VNodeChild)) | undefined;
@@ -137,6 +148,7 @@ declare const VSwitch: {
137
148
  props: Record<string, unknown>;
138
149
  }) => vue.VNodeChild) | undefined;
139
150
  input?: false | ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
151
+ loader?: false | ((args_0: LoaderSlotProps) => vue.VNodeChild) | undefined;
140
152
  } | undefined;
141
153
  } & {
142
154
  "v-slot:default"?: false | (((args_0: VInputSlot) => vue.VNodeChild) & (() => vue.VNodeChild)) | undefined;
@@ -148,11 +160,12 @@ declare const VSwitch: {
148
160
  props: Record<string, unknown>;
149
161
  }) => vue.VNodeChild) | undefined;
150
162
  "v-slot:input"?: false | ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
163
+ "v-slot:loader"?: false | ((args_0: LoaderSlotProps) => vue.VNodeChild) | undefined;
151
164
  } & {
152
165
  "onUpdate:modelValue"?: (() => any) | undefined;
153
166
  "onUpdate:focused"?: ((focused: boolean) => any) | undefined;
154
167
  "onUpdate:indeterminate"?: ((val: boolean) => any) | undefined;
155
- } & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, "flat" | "inline" | "error" | "direction" | "inset" | "loading" | "disabled" | "multiple" | "readonly" | "indeterminate" | "messages" | "density" | "ripple" | "focused" | "errorMessages" | "maxErrors" | "rules" | "valueComparator">;
168
+ } & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, "flat" | "inline" | "error" | "direction" | "inset" | "loading" | "disabled" | "multiple" | "readonly" | "indeterminate" | "messages" | "density" | "ripple" | "focused" | "errorMessages" | "maxErrors" | "rules" | "persistentHint" | "valueComparator">;
156
169
  $attrs: {
157
170
  [x: string]: unknown;
158
171
  };
@@ -184,6 +197,7 @@ declare const VSwitch: {
184
197
  errorMessages: string | string[];
185
198
  maxErrors: string | number;
186
199
  rules: ValidationRule[];
200
+ persistentHint: boolean;
187
201
  valueComparator: typeof deepEqual;
188
202
  } & {
189
203
  type?: string | undefined;
@@ -198,8 +212,10 @@ declare const VSwitch: {
198
212
  appendIcon?: IconValue | undefined;
199
213
  'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
200
214
  'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
215
+ 'onUpdate:focused'?: EventProp<[FocusEvent], (args_0: FocusEvent) => any> | undefined;
201
216
  validateOn?: "input" | "blur" | "submit" | undefined;
202
217
  validationValue?: any;
218
+ hint?: string | undefined;
203
219
  hideDetails?: boolean | "auto" | undefined;
204
220
  falseIcon?: IconValue | undefined;
205
221
  trueIcon?: IconValue | undefined;
@@ -216,6 +232,7 @@ declare const VSwitch: {
216
232
  props: Record<string, unknown>;
217
233
  }) => vue.VNodeChild) | undefined;
218
234
  input?: ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
235
+ loader?: ((args_0: LoaderSlotProps) => vue.VNodeChild) | undefined;
219
236
  };
220
237
  $slots?: {
221
238
  default?: (((args_0: VInputSlot) => vue.VNodeChild) & (() => vue.VNodeChild)) | undefined;
@@ -227,6 +244,7 @@ declare const VSwitch: {
227
244
  props: Record<string, unknown>;
228
245
  }) => vue.VNodeChild) | undefined;
229
246
  input?: ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
247
+ loader?: ((args_0: LoaderSlotProps) => vue.VNodeChild) | undefined;
230
248
  } | undefined;
231
249
  'v-slots'?: {
232
250
  default?: false | (((args_0: VInputSlot) => vue.VNodeChild) & (() => vue.VNodeChild)) | undefined;
@@ -238,6 +256,7 @@ declare const VSwitch: {
238
256
  props: Record<string, unknown>;
239
257
  }) => vue.VNodeChild) | undefined;
240
258
  input?: false | ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
259
+ loader?: false | ((args_0: LoaderSlotProps) => vue.VNodeChild) | undefined;
241
260
  } | undefined;
242
261
  } & {
243
262
  "v-slot:default"?: false | (((args_0: VInputSlot) => vue.VNodeChild) & (() => vue.VNodeChild)) | undefined;
@@ -249,6 +268,7 @@ declare const VSwitch: {
249
268
  props: Record<string, unknown>;
250
269
  }) => vue.VNodeChild) | undefined;
251
270
  "v-slot:input"?: false | ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
271
+ "v-slot:loader"?: false | ((args_0: LoaderSlotProps) => vue.VNodeChild) | undefined;
252
272
  } & {
253
273
  "onUpdate:modelValue"?: (() => any) | undefined;
254
274
  "onUpdate:focused"?: ((focused: boolean) => any) | undefined;
@@ -275,6 +295,7 @@ declare const VSwitch: {
275
295
  errorMessages: string | string[];
276
296
  maxErrors: string | number;
277
297
  rules: ValidationRule[];
298
+ persistentHint: boolean;
278
299
  valueComparator: typeof deepEqual;
279
300
  }, {}, string> & {
280
301
  beforeCreate?: ((() => void) | (() => void)[]) | undefined;
@@ -314,6 +335,7 @@ declare const VSwitch: {
314
335
  errorMessages: string | string[];
315
336
  maxErrors: string | number;
316
337
  rules: ValidationRule[];
338
+ persistentHint: boolean;
317
339
  valueComparator: typeof deepEqual;
318
340
  } & {
319
341
  type?: string | undefined;
@@ -328,8 +350,10 @@ declare const VSwitch: {
328
350
  appendIcon?: IconValue | undefined;
329
351
  'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
330
352
  'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
353
+ 'onUpdate:focused'?: EventProp<[FocusEvent], (args_0: FocusEvent) => any> | undefined;
331
354
  validateOn?: "input" | "blur" | "submit" | undefined;
332
355
  validationValue?: any;
356
+ hint?: string | undefined;
333
357
  hideDetails?: boolean | "auto" | undefined;
334
358
  falseIcon?: IconValue | undefined;
335
359
  trueIcon?: IconValue | undefined;
@@ -346,6 +370,7 @@ declare const VSwitch: {
346
370
  props: Record<string, unknown>;
347
371
  }) => vue.VNodeChild) | undefined;
348
372
  input?: ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
373
+ loader?: ((args_0: LoaderSlotProps) => vue.VNodeChild) | undefined;
349
374
  };
350
375
  $slots?: {
351
376
  default?: (((args_0: VInputSlot) => vue.VNodeChild) & (() => vue.VNodeChild)) | undefined;
@@ -357,6 +382,7 @@ declare const VSwitch: {
357
382
  props: Record<string, unknown>;
358
383
  }) => vue.VNodeChild) | undefined;
359
384
  input?: ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
385
+ loader?: ((args_0: LoaderSlotProps) => vue.VNodeChild) | undefined;
360
386
  } | undefined;
361
387
  'v-slots'?: {
362
388
  default?: false | (((args_0: VInputSlot) => vue.VNodeChild) & (() => vue.VNodeChild)) | undefined;
@@ -368,6 +394,7 @@ declare const VSwitch: {
368
394
  props: Record<string, unknown>;
369
395
  }) => vue.VNodeChild) | undefined;
370
396
  input?: false | ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
397
+ loader?: false | ((args_0: LoaderSlotProps) => vue.VNodeChild) | undefined;
371
398
  } | undefined;
372
399
  } & {
373
400
  "v-slot:default"?: false | (((args_0: VInputSlot) => vue.VNodeChild) & (() => vue.VNodeChild)) | undefined;
@@ -379,6 +406,7 @@ declare const VSwitch: {
379
406
  props: Record<string, unknown>;
380
407
  }) => vue.VNodeChild) | undefined;
381
408
  "v-slot:input"?: false | ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
409
+ "v-slot:loader"?: false | ((args_0: LoaderSlotProps) => vue.VNodeChild) | undefined;
382
410
  } & {
383
411
  "onUpdate:modelValue"?: (() => any) | undefined;
384
412
  "onUpdate:focused"?: ((focused: boolean) => any) | undefined;
@@ -405,6 +433,7 @@ declare const VSwitch: {
405
433
  errorMessages: string | string[];
406
434
  maxErrors: string | number;
407
435
  rules: ValidationRule[];
436
+ persistentHint: boolean;
408
437
  valueComparator: typeof deepEqual;
409
438
  } & {
410
439
  type?: string | undefined;
@@ -419,8 +448,10 @@ declare const VSwitch: {
419
448
  appendIcon?: IconValue | undefined;
420
449
  'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
421
450
  'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
451
+ 'onUpdate:focused'?: EventProp<[FocusEvent], (args_0: FocusEvent) => any> | undefined;
422
452
  validateOn?: "input" | "blur" | "submit" | undefined;
423
453
  validationValue?: any;
454
+ hint?: string | undefined;
424
455
  hideDetails?: boolean | "auto" | undefined;
425
456
  falseIcon?: IconValue | undefined;
426
457
  trueIcon?: IconValue | undefined;
@@ -437,6 +468,7 @@ declare const VSwitch: {
437
468
  props: Record<string, unknown>;
438
469
  }) => vue.VNodeChild) | undefined;
439
470
  input?: ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
471
+ loader?: ((args_0: LoaderSlotProps) => vue.VNodeChild) | undefined;
440
472
  };
441
473
  $slots?: {
442
474
  default?: (((args_0: VInputSlot) => vue.VNodeChild) & (() => vue.VNodeChild)) | undefined;
@@ -448,6 +480,7 @@ declare const VSwitch: {
448
480
  props: Record<string, unknown>;
449
481
  }) => vue.VNodeChild) | undefined;
450
482
  input?: ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
483
+ loader?: ((args_0: LoaderSlotProps) => vue.VNodeChild) | undefined;
451
484
  } | undefined;
452
485
  'v-slots'?: {
453
486
  default?: false | (((args_0: VInputSlot) => vue.VNodeChild) & (() => vue.VNodeChild)) | undefined;
@@ -459,6 +492,7 @@ declare const VSwitch: {
459
492
  props: Record<string, unknown>;
460
493
  }) => vue.VNodeChild) | undefined;
461
494
  input?: false | ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
495
+ loader?: false | ((args_0: LoaderSlotProps) => vue.VNodeChild) | undefined;
462
496
  } | undefined;
463
497
  } & {
464
498
  "v-slot:default"?: false | (((args_0: VInputSlot) => vue.VNodeChild) & (() => vue.VNodeChild)) | undefined;
@@ -470,6 +504,7 @@ declare const VSwitch: {
470
504
  props: Record<string, unknown>;
471
505
  }) => vue.VNodeChild) | undefined;
472
506
  "v-slot:input"?: false | ((args_0: SelectionControlSlot) => vue.VNodeChild) | undefined;
507
+ "v-slot:loader"?: false | ((args_0: LoaderSlotProps) => vue.VNodeChild) | undefined;
473
508
  } & {
474
509
  "onUpdate:modelValue"?: (() => any) | undefined;
475
510
  "onUpdate:focused"?: ((focused: boolean) => any) | undefined;
@@ -496,6 +531,7 @@ declare const VSwitch: {
496
531
  errorMessages: string | string[];
497
532
  maxErrors: string | number;
498
533
  rules: ValidationRule[];
534
+ persistentHint: boolean;
499
535
  valueComparator: typeof deepEqual;
500
536
  }, {}, string> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
501
537
  density: {
@@ -532,6 +568,7 @@ declare const VSwitch: {
532
568
  falseValue: null;
533
569
  value: null;
534
570
  focused: BooleanConstructor;
571
+ 'onUpdate:focused': vue.PropType<EventProp<[FocusEvent], (args_0: FocusEvent) => any>>;
535
572
  errorMessages: {
536
573
  type: vue.PropType<string | string[]>;
537
574
  default: () => never[];
@@ -549,6 +586,8 @@ declare const VSwitch: {
549
586
  appendIcon: vue.PropType<IconValue>;
550
587
  prependIcon: vue.PropType<IconValue>;
551
588
  hideDetails: vue.PropType<boolean | "auto">;
589
+ hint: StringConstructor;
590
+ persistentHint: BooleanConstructor;
552
591
  messages: {
553
592
  type: vue.PropType<string | string[]>;
554
593
  default: () => never[];
@@ -602,6 +641,7 @@ declare const VSwitch: {
602
641
  falseValue: null;
603
642
  value: null;
604
643
  focused: BooleanConstructor;
644
+ 'onUpdate:focused': vue.PropType<EventProp<[FocusEvent], (args_0: FocusEvent) => any>>;
605
645
  errorMessages: {
606
646
  type: vue.PropType<string | string[]>;
607
647
  default: () => never[];
@@ -619,6 +659,8 @@ declare const VSwitch: {
619
659
  appendIcon: vue.PropType<IconValue>;
620
660
  prependIcon: vue.PropType<IconValue>;
621
661
  hideDetails: vue.PropType<boolean | "auto">;
662
+ hint: StringConstructor;
663
+ persistentHint: BooleanConstructor;
622
664
  messages: {
623
665
  type: vue.PropType<string | string[]>;
624
666
  default: () => never[];
@@ -4,7 +4,7 @@ import "./VTextField.css";
4
4
 
5
5
  // Components
6
6
  import { filterFieldProps, makeVFieldProps, VField } from "../VField/VField.mjs";
7
- import { filterInputProps, makeVInputProps, VInput } from "../VInput/VInput.mjs";
7
+ import { makeVInputProps, VInput } from "../VInput/VInput.mjs";
8
8
  import { VCounter } from "../VCounter/index.mjs"; // Directives
9
9
  import Intersect from "../../directives/intersect/index.mjs"; // Composables
10
10
  import { forwardRefs } from "../../composables/forwardRefs.mjs";
@@ -17,8 +17,6 @@ export const makeVTextFieldProps = propsFactory({
17
17
  autofocus: Boolean,
18
18
  counter: [Boolean, Number, String],
19
19
  counterValue: Function,
20
- hint: String,
21
- persistentHint: Boolean,
22
20
  prefix: String,
23
21
  placeholder: String,
24
22
  persistentPlaceholder: Boolean,
@@ -73,9 +71,6 @@ export const VTextField = genericComponent()({
73
71
  const vFieldRef = ref();
74
72
  const inputRef = ref();
75
73
  const isActive = computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value);
76
- const messages = computed(() => {
77
- return props.messages.length ? props.messages : isFocused.value || props.persistentHint ? props.hint : '';
78
- });
79
74
  function onFocus() {
80
75
  if (inputRef.value !== document.activeElement) {
81
76
  inputRef.value?.focus();
@@ -118,7 +113,7 @@ export const VTextField = genericComponent()({
118
113
  const [{
119
114
  modelValue: _,
120
115
  ...inputProps
121
- }] = filterInputProps(props);
116
+ }] = VInput.filterProps(props);
122
117
  const [fieldProps] = filterFieldProps(props);
123
118
  return _createVNode(VInput, _mergeProps({
124
119
  "ref": vInputRef,
@@ -128,12 +123,9 @@ export const VTextField = genericComponent()({
128
123
  'v-text-field--prefixed': props.prefix,
129
124
  'v-text-field--suffixed': props.suffix,
130
125
  'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
131
- }],
132
- "onClick:prepend": props['onClick:prepend'],
133
- "onClick:append": props['onClick:append']
126
+ }]
134
127
  }, rootAttrs, inputProps, {
135
- "focused": isFocused.value,
136
- "messages": messages.value
128
+ "focused": isFocused.value
137
129
  }), {
138
130
  ...slots,
139
131
  default: _ref2 => {