@vuetify/nightly 4.0.0-dev-20230419.0 → 4.0.0-dev-20230422.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.
- package/CHANGELOG.md +7 -2
- package/dist/json/attributes.json +172 -108
- package/dist/json/importMap.json +58 -58
- package/dist/json/tags.json +16 -0
- package/dist/json/web-types.json +522 -220
- package/dist/vuetify-labs.css +335 -172
- package/dist/vuetify-labs.d.ts +620 -171
- package/dist/vuetify-labs.esm.js +864 -182
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +864 -181
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +166 -3
- package/dist/vuetify.d.ts +584 -167
- package/dist/vuetify.esm.js +806 -134
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +806 -133
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +748 -682
- package/dist/vuetify.min.js.map +1 -1
- package/lib/adapters/date-adapter.mjs +2 -0
- package/lib/adapters/date-adapter.mjs.map +1 -0
- package/lib/adapters/vuetify.mjs +399 -0
- package/lib/adapters/vuetify.mjs.map +1 -0
- package/lib/blueprints/index.d.ts +34 -0
- package/lib/blueprints/md1.d.ts +34 -0
- package/lib/blueprints/md2.d.ts +34 -0
- package/lib/blueprints/md3.d.ts +34 -0
- package/lib/components/VAppBar/VAppBar.mjs +62 -10
- package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
- package/lib/components/VAppBar/index.d.ts +26 -0
- package/lib/components/VAutocomplete/VAutocomplete.css +9 -0
- package/lib/components/VAutocomplete/VAutocomplete.mjs +50 -6
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.sass +10 -0
- package/lib/components/VAutocomplete/index.d.ts +29 -17
- package/lib/components/VBtn/_mixins.scss +1 -1
- package/lib/components/VCard/VCard.mjs.map +1 -1
- package/lib/components/VCard/index.d.ts +21 -16
- package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
- package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
- package/lib/components/VCheckbox/index.d.ts +22 -1
- package/lib/components/VCombobox/VCombobox.css +1 -1
- package/lib/components/VCombobox/VCombobox.mjs +6 -4
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.sass +1 -1
- package/lib/components/VCombobox/index.d.ts +29 -17
- package/lib/components/VField/index.d.ts +6 -0
- package/lib/components/VFileInput/VFileInput.mjs +13 -17
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VFileInput/index.d.ts +68 -23
- package/lib/components/VInput/VInput.mjs +14 -7
- package/lib/components/VInput/VInput.mjs.map +1 -1
- package/lib/components/VInput/index.d.ts +22 -1
- package/lib/components/VOverlay/locationStrategies.mjs +9 -4
- package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
- package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -2
- package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
- package/lib/components/VRadioGroup/index.d.ts +22 -1
- package/lib/components/VRangeSlider/VRangeSlider.mjs +33 -22
- package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
- package/lib/components/VRangeSlider/index.d.ts +39 -6
- package/lib/components/VSelect/VSelect.mjs +6 -0
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/index.d.ts +32 -17
- package/lib/components/VSlider/VSlider.mjs +33 -15
- package/lib/components/VSlider/VSlider.mjs.map +1 -1
- package/lib/components/VSlider/index.d.ts +39 -6
- package/lib/components/VSlider/slider.mjs +43 -23
- package/lib/components/VSlider/slider.mjs.map +1 -1
- package/lib/components/VSwitch/VSwitch.mjs +5 -3
- package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
- package/lib/components/VSwitch/index.d.ts +43 -1
- package/lib/components/VTextField/VTextField.mjs +4 -12
- package/lib/components/VTextField/VTextField.mjs.map +1 -1
- package/lib/components/VTextField/index.d.ts +70 -22
- package/lib/components/VTextarea/VTextarea.mjs +4 -12
- package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
- package/lib/components/VTextarea/index.d.ts +61 -22
- package/lib/components/VToolbar/VToolbar.css +3 -1
- package/lib/components/VToolbar/VToolbar.sass +3 -1
- package/lib/components/VValidation/index.d.ts +10 -1
- package/lib/components/index.d.ts +525 -150
- package/lib/composables/date.mjs +39 -0
- package/lib/composables/date.mjs.map +1 -0
- package/lib/composables/focus.mjs +3 -2
- package/lib/composables/focus.mjs.map +1 -1
- package/lib/composables/index.mjs +1 -0
- package/lib/composables/index.mjs.map +1 -1
- package/lib/composables/items.mjs +7 -2
- package/lib/composables/items.mjs.map +1 -1
- package/lib/composables/scroll.mjs +3 -0
- package/lib/composables/scroll.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +8 -3
- package/lib/framework.mjs.map +1 -1
- package/lib/iconsets/mdi-svg.mjs +2 -2
- package/lib/iconsets/mdi-svg.mjs.map +1 -1
- package/lib/index.d.ts +59 -17
- package/lib/labs/VDataTable/VDataTable.mjs +2 -2
- package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableRows.mjs +52 -44
- package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableServer.mjs +2 -1
- package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs +0 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/options.mjs +2 -1
- package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
- package/lib/labs/VDataTable/index.d.ts +44 -11
- package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs +1 -0
- package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
- package/lib/labs/VSkeletonLoader/index.d.ts +9 -9
- package/lib/labs/components.d.ts +53 -20
- package/lib/styles/main.css +152 -0
- package/lib/styles/settings/_utilities.scss +11 -1
- package/lib/util/helpers.mjs +4 -0
- package/lib/util/helpers.mjs.map +1 -1
- package/package.json +2 -2
@@ -74,11 +74,33 @@ 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(() => Math.max(getDecimals(step.value), getDecimals(min.value)));
|
82
|
+
function roundValue(value) {
|
83
|
+
if (step.value <= 0) return value;
|
84
|
+
const clamped = clamp(value, min.value, max.value);
|
85
|
+
const offset = min.value % step.value;
|
86
|
+
const newValue = Math.round((clamped - offset) / step.value) * step.value + offset;
|
87
|
+
return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value));
|
88
|
+
}
|
89
|
+
return {
|
90
|
+
min,
|
91
|
+
max,
|
92
|
+
step,
|
93
|
+
decimals,
|
94
|
+
roundValue
|
95
|
+
};
|
96
|
+
};
|
77
97
|
export const useSlider = _ref => {
|
78
98
|
let {
|
79
99
|
props,
|
80
|
-
|
81
|
-
|
100
|
+
steps,
|
101
|
+
onSliderStart,
|
102
|
+
onSliderMove,
|
103
|
+
onSliderEnd,
|
82
104
|
getActiveThumb
|
83
105
|
} = _ref;
|
84
106
|
const {
|
@@ -92,10 +114,13 @@ export const useSlider = _ref => {
|
|
92
114
|
}
|
93
115
|
return hd;
|
94
116
|
});
|
95
|
-
const
|
96
|
-
|
97
|
-
|
98
|
-
|
117
|
+
const {
|
118
|
+
min,
|
119
|
+
max,
|
120
|
+
step,
|
121
|
+
decimals,
|
122
|
+
roundValue
|
123
|
+
} = steps;
|
99
124
|
const thumbSize = computed(() => parseInt(props.thumbSize, 10));
|
100
125
|
const tickSize = computed(() => parseInt(props.tickSize, 10));
|
101
126
|
const trackSize = computed(() => parseInt(props.trackSize, 10));
|
@@ -109,13 +134,6 @@ export const useSlider = _ref => {
|
|
109
134
|
const startOffset = ref(0);
|
110
135
|
const trackContainerRef = ref();
|
111
136
|
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
137
|
function parseMouseMove(e) {
|
120
138
|
const vertical = props.direction === 'vertical';
|
121
139
|
const start = vertical ? 'top' : 'left';
|
@@ -132,14 +150,11 @@ export const useSlider = _ref => {
|
|
132
150
|
if (vertical || horizontalDirection.value === 'rtl') clickPos = 1 - clickPos;
|
133
151
|
return roundValue(min.value + clickPos * (max.value - min.value));
|
134
152
|
}
|
135
|
-
let thumbMoved = false;
|
136
153
|
const handleStop = e => {
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
}
|
154
|
+
onSliderEnd({
|
155
|
+
value: parseMouseMove(e)
|
156
|
+
});
|
141
157
|
mousePressed.value = false;
|
142
|
-
thumbMoved = false;
|
143
158
|
startOffset.value = 0;
|
144
159
|
};
|
145
160
|
const handleStart = e => {
|
@@ -148,20 +163,25 @@ export const useSlider = _ref => {
|
|
148
163
|
activeThumbRef.value.focus();
|
149
164
|
mousePressed.value = true;
|
150
165
|
if (activeThumbRef.value.contains(e.target)) {
|
151
|
-
thumbMoved = true;
|
152
166
|
startOffset.value = getOffset(e, activeThumbRef.value, props.direction);
|
153
167
|
} else {
|
154
168
|
startOffset.value = 0;
|
155
|
-
|
169
|
+
onSliderMove({
|
170
|
+
value: parseMouseMove(e)
|
171
|
+
});
|
156
172
|
}
|
173
|
+
onSliderStart({
|
174
|
+
value: parseMouseMove(e)
|
175
|
+
});
|
157
176
|
};
|
158
177
|
const moveListenerOptions = {
|
159
178
|
passive: true,
|
160
179
|
capture: true
|
161
180
|
};
|
162
181
|
function onMouseMove(e) {
|
163
|
-
|
164
|
-
|
182
|
+
onSliderMove({
|
183
|
+
value: parseMouseMove(e)
|
184
|
+
});
|
165
185
|
}
|
166
186
|
function onSliderMouseUp(e) {
|
167
187
|
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","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","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 { 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\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: 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 {
|
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] =
|
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","
|
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 {
|
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
|
-
}] =
|
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 => {
|