UNPKG

vuetify

Version:

Vue Material Component Framework

1 lines 10.4 kB
{"version":3,"file":"VSlider.mjs","names":["VSliderThumb","VSliderTrack","makeVInputProps","VInput","VLabel","makeSliderProps","useSlider","useSteps","makeFocusProps","useFocus","useRtl","useProxiedModel","computed","ref","genericComponent","propsFactory","useRender","makeVSliderProps","modelValue","type","Number","String","default","VSlider","name","props","emits","value","v","start","end","setup","_ref","slots","emit","thumbContainerRef","rtlClasses","steps","model","undefined","parseFloat","min","roundValue","max","mousePressed","onSliderMousedown","onSliderTouchstart","trackContainerRef","position","hasLabels","readonly","onSliderStart","onSliderEnd","_ref2","roundedValue","onSliderMove","_ref3","getActiveThumb","$el","isFocused","focus","blur","trackStop","inputProps","_","filterProps","hasPrepend","label","prepend","_createVNode","_mergeProps","disabled","class","style","slotProps","_Fragment","id","_ref4","messagesId","elevation"],"sources":["../../../src/components/VSlider/VSlider.tsx"],"sourcesContent":["// Styles\nimport './VSlider.sass'\n\n// Components\nimport { VSliderThumb } from './VSliderThumb'\nimport { VSliderTrack } from './VSliderTrack'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VLabel } from '@/components/VLabel'\n\n// Composables\nimport { makeSliderProps, useSlider, useSteps } from './slider'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VInputSlot, VInputSlots } from '@/components/VInput/VInput'\n\nexport type VSliderSlots = VInputSlots & {\n label: VInputSlot\n 'tick-label': never\n 'thumb-label': never\n}\n\nexport const makeVSliderProps = propsFactory({\n ...makeFocusProps(),\n ...makeSliderProps(),\n ...makeVInputProps(),\n\n modelValue: {\n type: [Number, String],\n default: 0,\n },\n}, 'VSlider')\n\nexport const VSlider = genericComponent<VSliderSlots>()({\n name: 'VSlider',\n\n props: makeVSliderProps(),\n\n emits: {\n 'update:focused': (value: boolean) => true,\n 'update:modelValue': (v: number) => true,\n start: (value: number) => true,\n end: (value: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const thumbContainerRef = ref()\n const { rtlClasses } = useRtl()\n\n const steps = useSteps(props)\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n v => {\n const value = typeof v === 'string' ? parseFloat(v) : v == null ? steps.min.value : v\n\n return steps.roundValue(value)\n },\n )\n\n const {\n min,\n max,\n mousePressed,\n roundValue,\n onSliderMousedown,\n onSliderTouchstart,\n trackContainerRef,\n position,\n hasLabels,\n readonly,\n } = useSlider({\n props,\n steps,\n onSliderStart: () => {\n emit('start', model.value)\n },\n onSliderEnd: ({ value }) => {\n const roundedValue = roundValue(value)\n model.value = roundedValue\n emit('end', roundedValue)\n },\n onSliderMove: ({ value }) => model.value = roundValue(value),\n getActiveThumb: () => thumbContainerRef.value?.$el,\n })\n\n const { isFocused, focus, blur } = useFocus(props)\n const trackStop = computed(() => position(model.value))\n\n useRender(() => {\n const [inputProps, _] = VInput.filterProps(props)\n const hasPrepend = !!(props.label || slots.label || slots.prepend)\n\n return (\n <VInput\n class={[\n 'v-slider',\n {\n 'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,\n 'v-slider--focused': isFocused.value,\n 'v-slider--pressed': mousePressed.value,\n 'v-slider--disabled': props.disabled,\n },\n rtlClasses.value,\n props.class,\n ]}\n style={ props.style }\n { ...inputProps }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n prepend: hasPrepend ? slotProps => (\n <>\n { slots.label?.(slotProps) ?? props.label\n ? (\n <VLabel\n id={ slotProps.id.value }\n class=\"v-slider__label\"\n text={ props.label }\n />\n ) : undefined\n }\n\n { slots.prepend?.(slotProps) }\n </>\n ) : undefined,\n default: ({ id, messagesId }) => (\n <div\n class=\"v-slider__container\"\n onMousedown={ !readonly.value ? onSliderMousedown : undefined }\n onTouchstartPassive={ !readonly.value ? onSliderTouchstart : undefined }\n >\n <input\n id={ id.value }\n name={ props.name || id.value }\n disabled={ !!props.disabled }\n readonly={ !!props.readonly }\n tabindex=\"-1\"\n value={ model.value }\n />\n\n <VSliderTrack\n ref={ trackContainerRef }\n start={ 0 }\n stop={ trackStop.value }\n >\n {{ 'tick-label': slots['tick-label'] }}\n </VSliderTrack>\n\n <VSliderThumb\n ref={ thumbContainerRef }\n aria-describedby={ messagesId.value }\n focused={ isFocused.value }\n min={ min.value }\n max={ max.value }\n modelValue={ model.value }\n onUpdate:modelValue={ v => (model.value = v) }\n position={ trackStop.value }\n elevation={ props.elevation }\n onFocus={ focus }\n onBlur={ blur }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n </div>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n\nexport type VSlider = InstanceType<typeof VSlider>\n"],"mappings":"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"}