@vuetify/nightly 3.8.7-master.2025-05-31 → 3.8.7-master.2025-06-03
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 +12 -3
- package/dist/json/attributes.json +3132 -3132
- package/dist/json/importMap-labs.json +22 -22
- package/dist/json/importMap.json +118 -118
- package/dist/json/web-types.json +5875 -5875
- package/dist/vuetify-labs.cjs +90 -80
- package/dist/vuetify-labs.css +3328 -3322
- package/dist/vuetify-labs.d.ts +42 -42
- package/dist/vuetify-labs.esm.js +90 -80
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +90 -80
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +84 -74
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +4505 -4499
- package/dist/vuetify.d.ts +42 -42
- package/dist/vuetify.esm.js +84 -74
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +84 -74
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +265 -265
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.css +6 -6
- package/lib/components/VAutocomplete/VAutocomplete.sass +3 -9
- package/lib/components/VCarousel/VCarousel.js +3 -3
- package/lib/components/VCarousel/VCarousel.js.map +1 -1
- package/lib/components/VChip/VChip.js +1 -0
- package/lib/components/VChip/VChip.js.map +1 -1
- package/lib/components/VColorPicker/VColorPickerPreview.js +3 -3
- package/lib/components/VColorPicker/VColorPickerPreview.js.map +1 -1
- package/lib/components/VColorPicker/VColorPickerSwatches.js +3 -3
- package/lib/components/VColorPicker/VColorPickerSwatches.js.map +1 -1
- package/lib/components/VCombobox/VCombobox.css +6 -6
- package/lib/components/VCombobox/VCombobox.sass +3 -9
- package/lib/components/VDataTable/VDataTableColumn.js +3 -3
- package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
- package/lib/components/VDataTable/VDataTableGroupHeaderRow.js +3 -3
- package/lib/components/VDataTable/VDataTableGroupHeaderRow.js.map +1 -1
- package/lib/components/VDataTable/VDataTableVirtual.js +7 -7
- package/lib/components/VDataTable/VDataTableVirtual.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerControls.js +4 -4
- package/lib/components/VDatePicker/VDatePickerControls.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.js +3 -3
- package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonths.js +3 -3
- package/lib/components/VDatePicker/VDatePickerMonths.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerYears.js +3 -3
- package/lib/components/VDatePicker/VDatePickerYears.js.map +1 -1
- package/lib/components/VEmptyState/VEmptyState.js +3 -3
- package/lib/components/VEmptyState/VEmptyState.js.map +1 -1
- package/lib/components/VImg/VImg.js +7 -7
- package/lib/components/VImg/VImg.js.map +1 -1
- package/lib/components/VInfiniteScroll/VInfiniteScroll.js +3 -3
- package/lib/components/VInfiniteScroll/VInfiniteScroll.js.map +1 -1
- package/lib/components/VOtpInput/VOtpInput.js +2 -2
- package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
- package/lib/components/VProgressCircular/VProgressCircular.js +2 -2
- package/lib/components/VProgressCircular/VProgressCircular.js.map +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.js +3 -3
- package/lib/components/VProgressLinear/VProgressLinear.js.map +1 -1
- package/lib/components/VSelect/VSelect.css +6 -0
- package/lib/components/VSelect/VSelect.sass +3 -0
- package/lib/components/VSelect/_mixins.scss +14 -0
- package/lib/components/VSelectionControl/VSelectionControl.js +2 -2
- package/lib/components/VSelectionControl/VSelectionControl.js.map +1 -1
- package/lib/components/VSlider/VSliderThumb.js +16 -10
- package/lib/components/VSlider/VSliderThumb.js.map +1 -1
- package/lib/components/VSlider/VSliderTrack.js +6 -6
- package/lib/components/VSlider/VSliderTrack.js.map +1 -1
- package/lib/components/VSlider/slider.js +4 -1
- package/lib/components/VSlider/slider.js.map +1 -1
- package/lib/components/VTable/VTable.js +3 -3
- package/lib/components/VTable/VTable.js.map +1 -1
- package/lib/components/VToolbar/VToolbar.js +5 -5
- package/lib/components/VToolbar/VToolbar.js.map +1 -1
- package/lib/components/VVirtualScroll/VVirtualScroll.js +7 -7
- package/lib/components/VVirtualScroll/VVirtualScroll.js.map +1 -1
- package/lib/components/VWindow/VWindow.js +3 -3
- package/lib/components/VWindow/VWindow.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +42 -42
- package/lib/framework.js +1 -1
- package/lib/labs/VPullToRefresh/VPullToRefresh.js +7 -7
- package/lib/labs/VPullToRefresh/VPullToRefresh.js.map +1 -1
- package/package.json +2 -2
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VSelectionControl.js","names":["VIcon","VLabel","makeSelectionControlGroupProps","VSelectionControlGroupSymbol","useBackgroundColor","useTextColor","makeComponentProps","useDensity","useProxiedModel","vRipple","computed","inject","nextTick","ref","shallowRef","toRef","useId","filterInputAttrs","genericComponent","matchesSelector","propsFactory","useRender","wrapInArray","makeVSelectionControlProps","label","String","baseColor","trueValue","falseValue","value","useSelectionControl","props","group","undefined","densityClasses","modelValue","isMultiple","multiple","Array","isArray","model","get","val","some","v","valueComparator","set","readonly","currentValue","newVal","filter","item","textColorClasses","textColorStyles","error","disabled","color","backgroundColorClasses","backgroundColorStyles","icon","trueIcon","falseIcon","VSelectionControl","name","directives","inheritAttrs","emits","setup","_ref","attrs","slots","uid","isFocused","isFocusVisible","input","id","isInteractive","onForceUpdate","checked","onFocus","e","target","onBlur","onClickLabel","stopPropagation","onInput","forceUpdate","for","rootAttrs","inputAttrs","inputNode","_createElementVNode","_mergeProps","type","inline","class","style","_normalizeClass","_normalizeStyle","default","_withDirectives","_Fragment","_createVNode","ripple"],"sources":["../../../src/components/VSelectionControl/VSelectionControl.tsx"],"sourcesContent":["// Styles\nimport './VSelectionControl.sass'\n\n// Components\nimport { VIcon } from '@/components/VIcon'\nimport { VLabel } from '@/components/VLabel'\nimport { makeSelectionControlGroupProps, VSelectionControlGroupSymbol } from '@/components/VSelectionControlGroup/VSelectionControlGroup'\n\n// Composables\nimport { useBackgroundColor, useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useDensity } from '@/composables/density'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport vRipple from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject, nextTick, ref, shallowRef, toRef, useId } from 'vue'\nimport {\n filterInputAttrs,\n genericComponent,\n matchesSelector,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { CSSProperties, ExtractPropTypes, Ref, VNode, WritableComputedRef } from 'vue'\nimport type { IconValue } from '@/composables/icons'\nimport type { EventProp, GenericProps } from '@/util'\n\nexport type SelectionControlSlot = {\n model: WritableComputedRef<boolean>\n textColorClasses: Ref<string[]>\n textColorStyles: Ref<CSSProperties>\n backgroundColorClasses: Ref<string[]>\n backgroundColorStyles: Ref<CSSProperties>\n inputNode: VNode\n icon: IconValue | undefined\n props: {\n onBlur: (e: Event) => void\n onFocus: (e: FocusEvent) => void\n id: string\n }\n}\n\nexport type VSelectionControlSlots = {\n default: {\n backgroundColorClasses: Ref<string[]>\n backgroundColorStyles: Ref<CSSProperties>\n }\n label: { label: string | undefined, props: Record<string, unknown> }\n input: SelectionControlSlot\n}\n\nexport const makeVSelectionControlProps = propsFactory({\n label: String,\n baseColor: String,\n trueValue: null,\n falseValue: null,\n value: null,\n\n ...makeComponentProps(),\n ...makeSelectionControlGroupProps(),\n}, 'VSelectionControl')\n\nexport function useSelectionControl (\n props: ExtractPropTypes<ReturnType<typeof makeVSelectionControlProps>> & {\n 'onUpdate:modelValue': EventProp | undefined\n }\n) {\n const group = inject(VSelectionControlGroupSymbol, undefined)\n const { densityClasses } = useDensity(props)\n const modelValue = useProxiedModel(props, 'modelValue')\n const trueValue = computed(() => (\n props.trueValue !== undefined ? props.trueValue\n : props.value !== undefined ? props.value\n : true\n ))\n const falseValue = computed(() => props.falseValue !== undefined ? props.falseValue : false)\n const isMultiple = computed(() => (\n !!props.multiple ||\n (props.multiple == null && Array.isArray(modelValue.value))\n ))\n const model = computed({\n get () {\n const val = group ? group.modelValue.value : modelValue.value\n\n return isMultiple.value\n ? wrapInArray(val).some((v: any) => props.valueComparator(v, trueValue.value))\n : props.valueComparator(val, trueValue.value)\n },\n set (val: boolean) {\n if (props.readonly) return\n\n const currentValue = val ? trueValue.value : falseValue.value\n\n let newVal = currentValue\n\n if (isMultiple.value) {\n newVal = val\n ? [...wrapInArray(modelValue.value), currentValue]\n : wrapInArray(modelValue.value).filter((item: any) => !props.valueComparator(item, trueValue.value))\n }\n\n if (group) {\n group.modelValue.value = newVal\n } else {\n modelValue.value = newVal\n }\n },\n })\n const { textColorClasses, textColorStyles } = useTextColor(() => {\n if (props.error || props.disabled) return undefined\n\n return model.value ? props.color : props.baseColor\n })\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => {\n return (\n model.value &&\n !props.error &&\n !props.disabled\n ) ? props.color : props.baseColor\n })\n const icon = computed(() => model.value ? props.trueIcon : props.falseIcon)\n\n return {\n group,\n densityClasses,\n trueValue,\n falseValue,\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n icon,\n }\n}\n\nexport const VSelectionControl = genericComponent<new <T>(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VSelectionControlSlots,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VSelectionControl',\n\n directives: { vRipple },\n\n inheritAttrs: false,\n\n props: makeVSelectionControlProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const {\n group,\n densityClasses,\n icon,\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n trueValue,\n } = useSelectionControl(props)\n const uid = useId()\n const isFocused = shallowRef(false)\n const isFocusVisible = shallowRef(false)\n const input = ref<HTMLInputElement>()\n const id = toRef(() => props.id || `input-${uid}`)\n const isInteractive = toRef(() => !props.disabled && !props.readonly)\n\n group?.onForceUpdate(() => {\n if (input.value) {\n input.value.checked = model.value\n }\n })\n\n function onFocus (e: FocusEvent) {\n if (!isInteractive.value) return\n\n isFocused.value = true\n if (matchesSelector(e.target as HTMLElement, ':focus-visible') !== false) {\n isFocusVisible.value = true\n }\n }\n\n function onBlur () {\n isFocused.value = false\n isFocusVisible.value = false\n }\n\n function onClickLabel (e: Event) {\n e.stopPropagation()\n }\n\n function onInput (e: Event) {\n if (!isInteractive.value) {\n if (input.value) {\n // model value is not updated when input is not interactive\n // but the internal checked state of the input is still updated,\n // so here it's value is restored\n input.value.checked = model.value\n }\n\n return\n }\n\n if (props.readonly && group) {\n nextTick(() => group.forceUpdate())\n }\n model.value = (e.target as HTMLInputElement).checked\n }\n\n useRender(() => {\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n const inputNode = (\n <input\n ref={ input }\n checked={ model.value }\n disabled={ !!props.disabled }\n id={ id.value }\n onBlur={ onBlur }\n onFocus={ onFocus }\n onInput={ onInput }\n aria-disabled={ !!props.disabled }\n aria-label={ props.label }\n type={ props.type }\n value={ trueValue.value }\n name={ props.name }\n aria-checked={ props.type === 'checkbox' ? model.value : undefined }\n { ...inputAttrs }\n />\n )\n\n return (\n <div\n class={[\n 'v-selection-control',\n {\n 'v-selection-control--dirty': model.value,\n 'v-selection-control--disabled': props.disabled,\n 'v-selection-control--error': props.error,\n 'v-selection-control--focused': isFocused.value,\n 'v-selection-control--focus-visible': isFocusVisible.value,\n 'v-selection-control--inline': props.inline,\n },\n densityClasses.value,\n props.class,\n ]}\n { ...rootAttrs }\n style={ props.style }\n >\n <div\n class={[\n 'v-selection-control__wrapper',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n >\n { slots.default?.({\n backgroundColorClasses,\n backgroundColorStyles,\n })}\n\n <div\n class={[\n 'v-selection-control__input',\n ]}\n v-ripple={ props.ripple && [\n !props.disabled && !props.readonly,\n null,\n ['center', 'circle'],\n ]}\n >\n { slots.input?.({\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n inputNode,\n icon: icon.value,\n props: {\n onFocus,\n onBlur,\n id: id.value,\n },\n } satisfies SelectionControlSlot) ?? (\n <>\n { icon.value && <VIcon key=\"icon\" icon={ icon.value } /> }\n\n { inputNode }\n </>\n )}\n </div>\n </div>\n\n { label && (\n <VLabel for={ id.value } onClick={ onClickLabel }>\n { label }\n </VLabel>\n )}\n </div>\n )\n })\n\n return {\n isFocused,\n input,\n }\n },\n})\n\nexport type VSelectionControl = InstanceType<typeof VSelectionControl>\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"VSelectionControl.js","names":["VIcon","VLabel","makeSelectionControlGroupProps","VSelectionControlGroupSymbol","useBackgroundColor","useTextColor","makeComponentProps","useDensity","useProxiedModel","vRipple","computed","inject","nextTick","ref","shallowRef","toRef","useId","filterInputAttrs","genericComponent","matchesSelector","propsFactory","useRender","wrapInArray","makeVSelectionControlProps","label","String","baseColor","trueValue","falseValue","value","useSelectionControl","props","group","undefined","densityClasses","modelValue","isMultiple","multiple","Array","isArray","model","get","val","some","v","valueComparator","set","readonly","currentValue","newVal","filter","item","textColorClasses","textColorStyles","error","disabled","color","backgroundColorClasses","backgroundColorStyles","icon","trueIcon","falseIcon","VSelectionControl","name","directives","inheritAttrs","emits","setup","_ref","attrs","slots","uid","isFocused","isFocusVisible","input","id","isInteractive","onForceUpdate","checked","onFocus","e","target","onBlur","onClickLabel","stopPropagation","onInput","forceUpdate","for","rootAttrs","inputAttrs","inputNode","_createElementVNode","_mergeProps","type","inline","class","style","_normalizeClass","_normalizeStyle","default","_withDirectives","_Fragment","_createVNode","ripple"],"sources":["../../../src/components/VSelectionControl/VSelectionControl.tsx"],"sourcesContent":["// Styles\nimport './VSelectionControl.sass'\n\n// Components\nimport { VIcon } from '@/components/VIcon'\nimport { VLabel } from '@/components/VLabel'\nimport { makeSelectionControlGroupProps, VSelectionControlGroupSymbol } from '@/components/VSelectionControlGroup/VSelectionControlGroup'\n\n// Composables\nimport { useBackgroundColor, useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useDensity } from '@/composables/density'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport vRipple from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject, nextTick, ref, shallowRef, toRef, useId } from 'vue'\nimport {\n filterInputAttrs,\n genericComponent,\n matchesSelector,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { CSSProperties, ExtractPropTypes, Ref, VNode, WritableComputedRef } from 'vue'\nimport type { IconValue } from '@/composables/icons'\nimport type { EventProp, GenericProps } from '@/util'\n\nexport type SelectionControlSlot = {\n model: WritableComputedRef<boolean>\n textColorClasses: Ref<string[]>\n textColorStyles: Ref<CSSProperties>\n backgroundColorClasses: Ref<string[]>\n backgroundColorStyles: Ref<CSSProperties>\n inputNode: VNode\n icon: IconValue | undefined\n props: {\n onBlur: (e: Event) => void\n onFocus: (e: FocusEvent) => void\n id: string\n }\n}\n\nexport type VSelectionControlSlots = {\n default: {\n backgroundColorClasses: Ref<string[]>\n backgroundColorStyles: Ref<CSSProperties>\n }\n label: { label: string | undefined, props: Record<string, unknown> }\n input: SelectionControlSlot\n}\n\nexport const makeVSelectionControlProps = propsFactory({\n label: String,\n baseColor: String,\n trueValue: null,\n falseValue: null,\n value: null,\n\n ...makeComponentProps(),\n ...makeSelectionControlGroupProps(),\n}, 'VSelectionControl')\n\nexport function useSelectionControl (\n props: ExtractPropTypes<ReturnType<typeof makeVSelectionControlProps>> & {\n 'onUpdate:modelValue': EventProp | undefined\n }\n) {\n const group = inject(VSelectionControlGroupSymbol, undefined)\n const { densityClasses } = useDensity(props)\n const modelValue = useProxiedModel(props, 'modelValue')\n const trueValue = computed(() => (\n props.trueValue !== undefined ? props.trueValue\n : props.value !== undefined ? props.value\n : true\n ))\n const falseValue = computed(() => props.falseValue !== undefined ? props.falseValue : false)\n const isMultiple = computed(() => (\n !!props.multiple ||\n (props.multiple == null && Array.isArray(modelValue.value))\n ))\n const model = computed({\n get () {\n const val = group ? group.modelValue.value : modelValue.value\n\n return isMultiple.value\n ? wrapInArray(val).some((v: any) => props.valueComparator(v, trueValue.value))\n : props.valueComparator(val, trueValue.value)\n },\n set (val: boolean) {\n if (props.readonly) return\n\n const currentValue = val ? trueValue.value : falseValue.value\n\n let newVal = currentValue\n\n if (isMultiple.value) {\n newVal = val\n ? [...wrapInArray(modelValue.value), currentValue]\n : wrapInArray(modelValue.value).filter((item: any) => !props.valueComparator(item, trueValue.value))\n }\n\n if (group) {\n group.modelValue.value = newVal\n } else {\n modelValue.value = newVal\n }\n },\n })\n const { textColorClasses, textColorStyles } = useTextColor(() => {\n if (props.error || props.disabled) return undefined\n\n return model.value ? props.color : props.baseColor\n })\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => {\n return (\n model.value &&\n !props.error &&\n !props.disabled\n ) ? props.color : props.baseColor\n })\n const icon = computed(() => model.value ? props.trueIcon : props.falseIcon)\n\n return {\n group,\n densityClasses,\n trueValue,\n falseValue,\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n icon,\n }\n}\n\nexport const VSelectionControl = genericComponent<new <T>(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VSelectionControlSlots,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VSelectionControl',\n\n directives: { vRipple },\n\n inheritAttrs: false,\n\n props: makeVSelectionControlProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const {\n group,\n densityClasses,\n icon,\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n trueValue,\n } = useSelectionControl(props)\n const uid = useId()\n const isFocused = shallowRef(false)\n const isFocusVisible = shallowRef(false)\n const input = ref<HTMLInputElement>()\n const id = toRef(() => props.id || `input-${uid}`)\n const isInteractive = toRef(() => !props.disabled && !props.readonly)\n\n group?.onForceUpdate(() => {\n if (input.value) {\n input.value.checked = model.value\n }\n })\n\n function onFocus (e: FocusEvent) {\n if (!isInteractive.value) return\n\n isFocused.value = true\n if (matchesSelector(e.target as HTMLElement, ':focus-visible') !== false) {\n isFocusVisible.value = true\n }\n }\n\n function onBlur () {\n isFocused.value = false\n isFocusVisible.value = false\n }\n\n function onClickLabel (e: Event) {\n e.stopPropagation()\n }\n\n function onInput (e: Event) {\n if (!isInteractive.value) {\n if (input.value) {\n // model value is not updated when input is not interactive\n // but the internal checked state of the input is still updated,\n // so here it's value is restored\n input.value.checked = model.value\n }\n\n return\n }\n\n if (props.readonly && group) {\n nextTick(() => group.forceUpdate())\n }\n model.value = (e.target as HTMLInputElement).checked\n }\n\n useRender(() => {\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n const inputNode = (\n <input\n ref={ input }\n checked={ model.value }\n disabled={ !!props.disabled }\n id={ id.value }\n onBlur={ onBlur }\n onFocus={ onFocus }\n onInput={ onInput }\n aria-disabled={ !!props.disabled }\n aria-label={ props.label }\n type={ props.type }\n value={ trueValue.value }\n name={ props.name }\n aria-checked={ props.type === 'checkbox' ? model.value : undefined }\n { ...inputAttrs }\n />\n )\n\n return (\n <div\n class={[\n 'v-selection-control',\n {\n 'v-selection-control--dirty': model.value,\n 'v-selection-control--disabled': props.disabled,\n 'v-selection-control--error': props.error,\n 'v-selection-control--focused': isFocused.value,\n 'v-selection-control--focus-visible': isFocusVisible.value,\n 'v-selection-control--inline': props.inline,\n },\n densityClasses.value,\n props.class,\n ]}\n { ...rootAttrs }\n style={ props.style }\n >\n <div\n class={[\n 'v-selection-control__wrapper',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n >\n { slots.default?.({\n backgroundColorClasses,\n backgroundColorStyles,\n })}\n\n <div\n class={[\n 'v-selection-control__input',\n ]}\n v-ripple={ props.ripple && [\n !props.disabled && !props.readonly,\n null,\n ['center', 'circle'],\n ]}\n >\n { slots.input?.({\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n inputNode,\n icon: icon.value,\n props: {\n onFocus,\n onBlur,\n id: id.value,\n },\n } satisfies SelectionControlSlot) ?? (\n <>\n { icon.value && <VIcon key=\"icon\" icon={ icon.value } /> }\n\n { inputNode }\n </>\n )}\n </div>\n </div>\n\n { label && (\n <VLabel for={ id.value } onClick={ onClickLabel }>\n { label }\n </VLabel>\n )}\n </div>\n )\n })\n\n return {\n isFocused,\n input,\n }\n },\n})\n\nexport type VSelectionControl = InstanceType<typeof VSelectionControl>\n"],"mappings":"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","ignoreList":[]}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { normalizeClass as _normalizeClass,
|
1
|
+
import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, withDirectives as _withDirectives, vShow as _vShow, createVNode as _createVNode } from "vue";
|
2
2
|
// Styles
|
3
3
|
import "./VSliderThumb.css";
|
4
4
|
|
@@ -58,6 +58,8 @@ export const VSliderThumb = genericComponent()({
|
|
58
58
|
} = useRtl();
|
59
59
|
if (!slider) throw new Error('[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider');
|
60
60
|
const {
|
61
|
+
min,
|
62
|
+
max,
|
61
63
|
thumbColor,
|
62
64
|
step,
|
63
65
|
disabled,
|
@@ -98,16 +100,20 @@ export const VSliderThumb = genericComponent()({
|
|
98
100
|
if (!relevantKeys.includes(e.key)) return;
|
99
101
|
e.preventDefault();
|
100
102
|
const _step = step.value || 0.1;
|
101
|
-
const steps = (
|
103
|
+
const steps = (max.value - min.value) / _step;
|
102
104
|
if ([left, right, down, up].includes(e.key)) {
|
103
105
|
const increase = vertical.value ? [isRtl.value ? left : right, isReversed.value ? down : up] : indexFromEnd.value !== isRtl.value ? [left, up] : [right, up];
|
104
106
|
const direction = increase.includes(e.key) ? 1 : -1;
|
105
107
|
const multiplier = e.shiftKey ? 2 : e.ctrlKey ? 1 : 0;
|
106
|
-
|
108
|
+
if (direction === -1 && value === max.value && !multiplier && !Number.isInteger(steps)) {
|
109
|
+
value = value - steps % 1 * _step;
|
110
|
+
} else {
|
111
|
+
value = value + direction * _step * multipliers.value[multiplier];
|
112
|
+
}
|
107
113
|
} else if (e.key === home) {
|
108
|
-
value =
|
114
|
+
value = min.value;
|
109
115
|
} else if (e.key === end) {
|
110
|
-
value =
|
116
|
+
value = max.value;
|
111
117
|
} else {
|
112
118
|
const direction = e.key === pagedown ? 1 : -1;
|
113
119
|
value = value - direction * _step * (steps > 100 ? steps / 10 : 10);
|
@@ -132,17 +138,17 @@ export const VSliderThumb = genericComponent()({
|
|
132
138
|
"role": "slider",
|
133
139
|
"tabindex": disabled.value ? -1 : 0,
|
134
140
|
"aria-label": props.name,
|
135
|
-
"aria-valuemin":
|
136
|
-
"aria-valuemax":
|
141
|
+
"aria-valuemin": min.value,
|
142
|
+
"aria-valuemax": max.value,
|
137
143
|
"aria-valuenow": props.modelValue,
|
138
144
|
"aria-readonly": !!readonly.value,
|
139
145
|
"aria-orientation": direction.value,
|
140
146
|
"onKeydown": !readonly.value ? onKeydown : undefined
|
141
147
|
}, [_createElementVNode("div", {
|
142
148
|
"class": _normalizeClass(['v-slider-thumb__surface', textColorClasses.value, elevationClasses.value]),
|
143
|
-
"style":
|
149
|
+
"style": {
|
144
150
|
...textColorStyles.value
|
145
|
-
}
|
151
|
+
}
|
146
152
|
}, null), _withDirectives(_createElementVNode("div", {
|
147
153
|
"class": _normalizeClass(['v-slider-thumb__ripple', textColorClasses.value]),
|
148
154
|
"style": _normalizeStyle(textColorStyles.value)
|
@@ -155,7 +161,7 @@ export const VSliderThumb = genericComponent()({
|
|
155
161
|
default: () => [_withDirectives(_createElementVNode("div", {
|
156
162
|
"class": "v-slider-thumb__label-container"
|
157
163
|
}, [_createElementVNode("div", {
|
158
|
-
"class": ['v-slider-thumb__label']
|
164
|
+
"class": _normalizeClass(['v-slider-thumb__label'])
|
159
165
|
}, [_createElementVNode("div", null, [slots['thumb-label']?.({
|
160
166
|
modelValue: props.modelValue
|
161
167
|
}) ?? props.modelValue.toFixed(step.value ? decimals.value : 1)])])]), [[_vShow, thumbLabel.value && props.focused || thumbLabel.value === 'always']])]
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VSliderThumb.js","names":["VSliderSymbol","VScaleTransition","useTextColor","makeComponentProps","useElevation","useRtl","vRipple","computed","inject","convertToUnit","genericComponent","keyValues","propsFactory","useRender","makeVSliderThumbProps","focused","Boolean","max","type","Number","required","min","modelValue","position","ripple","Object","default","name","String","VSliderThumb","directives","props","emits","v","setup","_ref","slots","emit","slider","isRtl","rtlClasses","Error","thumbColor","step","disabled","thumbSize","thumbLabel","direction","isReversed","vertical","readonly","elevation","mousePressed","decimals","indexFromEnd","elevationProps","value","undefined","elevationClasses","textColorClasses","textColorStyles","pageup","pagedown","end","home","left","right","down","up","relevantKeys","multipliers","parseKeydown","e","includes","key","preventDefault","_step","steps","increase","multiplier","shiftKey","ctrlKey","Math","onKeydown","newValue","positionPercentage","_createElementVNode","_normalizeClass","class","_normalizeStyle","style","_withDirectives","circle","center","_createVNode","toFixed","_vShow"],"sources":["../../../src/components/VSlider/VSliderThumb.tsx"],"sourcesContent":["// Styles\nimport './VSliderThumb.sass'\n\n// Components\nimport { VSliderSymbol } from './slider'\nimport { VScaleTransition } from '../transitions'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useElevation } from '@/composables/elevation'\nimport { useRtl } from '@/composables/locale'\n\n// Directives\nimport vRipple from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { convertToUnit, genericComponent, keyValues, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport type VSliderThumbSlots = {\n 'thumb-label': { modelValue: number }\n}\n\nexport const makeVSliderThumbProps = propsFactory({\n focused: Boolean,\n max: {\n type: Number,\n required: true,\n },\n min: {\n type: Number,\n required: true,\n },\n modelValue: {\n type: Number,\n required: true,\n },\n position: {\n type: Number,\n required: true,\n },\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: true,\n },\n name: String,\n\n ...makeComponentProps(),\n}, 'VSliderThumb')\n\nexport const VSliderThumb = genericComponent<VSliderThumbSlots>()({\n name: 'VSliderThumb',\n\n directives: { vRipple },\n\n props: makeVSliderThumbProps(),\n\n emits: {\n 'update:modelValue': (v: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const slider = inject(VSliderSymbol)\n const { isRtl, rtlClasses } = useRtl()\n if (!slider) throw new Error('[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider')\n\n const {\n thumbColor,\n step,\n disabled,\n thumbSize,\n thumbLabel,\n direction,\n isReversed,\n vertical,\n readonly,\n elevation,\n mousePressed,\n decimals,\n indexFromEnd,\n } = slider\n\n const elevationProps = computed(() => !disabled.value ? elevation.value : undefined)\n const { elevationClasses } = useElevation(elevationProps)\n const { textColorClasses, textColorStyles } = useTextColor(thumbColor)\n\n const { pageup, pagedown, end, home, left, right, down, up } = keyValues\n const relevantKeys = [pageup, pagedown, end, home, left, right, down, up]\n\n const multipliers = computed(() => {\n if (step.value) return [1, 2, 3]\n else return [1, 5, 10]\n })\n\n function parseKeydown (e: KeyboardEvent, value: number) {\n if (!relevantKeys.includes(e.key)) return\n\n e.preventDefault()\n\n const _step = step.value || 0.1\n const steps = (props.max - props.min) / _step\n if ([left, right, down, up].includes(e.key)) {\n const increase = vertical.value\n ? [isRtl.value ? left : right, isReversed.value ? down : up]\n : indexFromEnd.value !== isRtl.value ? [left, up] : [right, up]\n const direction = increase.includes(e.key) ? 1 : -1\n const multiplier = e.shiftKey ? 2 : (e.ctrlKey ? 1 : 0)\n\n value = value + (direction * _step * multipliers.value[multiplier])\n } else if (e.key === home) {\n value = props.min\n } else if (e.key === end) {\n value = props.max\n } else {\n const direction = e.key === pagedown ? 1 : -1\n value = value - (direction * _step * (steps > 100 ? steps / 10 : 10))\n }\n\n return Math.max(props.min, Math.min(props.max, value))\n }\n\n function onKeydown (e: KeyboardEvent) {\n const newValue = parseKeydown(e, props.modelValue)\n\n newValue != null && emit('update:modelValue', newValue)\n }\n\n useRender(() => {\n const positionPercentage = convertToUnit(indexFromEnd.value ? 100 - props.position : props.position, '%')\n\n return (\n <div\n class={[\n 'v-slider-thumb',\n {\n 'v-slider-thumb--focused': props.focused,\n 'v-slider-thumb--pressed': props.focused && mousePressed.value,\n },\n props.class,\n rtlClasses.value,\n ]}\n style={[\n {\n '--v-slider-thumb-position': positionPercentage,\n '--v-slider-thumb-size': convertToUnit(thumbSize.value),\n },\n props.style,\n ]}\n role=\"slider\"\n tabindex={ disabled.value ? -1 : 0 }\n aria-label={ props.name }\n aria-valuemin={ props.min }\n aria-valuemax={ props.max }\n aria-valuenow={ props.modelValue }\n aria-readonly={ !!readonly.value }\n aria-orientation={ direction.value }\n onKeydown={ !readonly.value ? onKeydown : undefined }\n >\n <div\n class={[\n 'v-slider-thumb__surface',\n textColorClasses.value,\n elevationClasses.value,\n ]}\n style={{\n ...textColorStyles.value,\n }}\n />\n <div\n class={[\n 'v-slider-thumb__ripple',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n v-ripple={[props.ripple, null, ['circle', 'center']]}\n />\n <VScaleTransition origin=\"bottom center\">\n <div\n class=\"v-slider-thumb__label-container\"\n v-show={ (thumbLabel.value && props.focused) || thumbLabel.value === 'always' }\n >\n <div\n class={[\n 'v-slider-thumb__label',\n ]}\n >\n <div>\n { slots['thumb-label']?.({ modelValue: props.modelValue }) ?? props.modelValue.toFixed(step.value ? decimals.value : 1) }\n </div>\n </div>\n </div>\n </VScaleTransition>\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VSliderThumb = InstanceType<typeof VSliderThumb>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,aAAa;AAAA,SACbC,gBAAgB,mCAEzB;AAAA,SACSC,YAAY;AAAA,SACZC,kBAAkB;AAAA,SAClBC,YAAY;AAAA,SACZC,MAAM,uCAEf;AAAA,OACOC,OAAO,0CAEd;AACA,SAASC,QAAQ,EAAEC,MAAM,QAAQ,KAAK;AAAA,SAC7BC,aAAa,EAAEC,gBAAgB,EAAEC,SAAS,EAAEC,YAAY,EAAEC,SAAS,+BAE5E;AAQA,OAAO,MAAMC,qBAAqB,GAAGF,YAAY,CAAC;EAChDG,OAAO,EAAEC,OAAO;EAChBC,GAAG,EAAE;IACHC,IAAI,EAAEC,MAAM;IACZC,QAAQ,EAAE;EACZ,CAAC;EACDC,GAAG,EAAE;IACHH,IAAI,EAAEC,MAAM;IACZC,QAAQ,EAAE;EACZ,CAAC;EACDE,UAAU,EAAE;IACVJ,IAAI,EAAEC,MAAM;IACZC,QAAQ,EAAE;EACZ,CAAC;EACDG,QAAQ,EAAE;IACRL,IAAI,EAAEC,MAAM;IACZC,QAAQ,EAAE;EACZ,CAAC;EACDI,MAAM,EAAE;IACNN,IAAI,EAAE,CAACF,OAAO,EAAES,MAAM,CAA8C;IACpEC,OAAO,EAAE;EACX,CAAC;EACDC,IAAI,EAAEC,MAAM;EAEZ,GAAGzB,kBAAkB,CAAC;AACxB,CAAC,EAAE,cAAc,CAAC;AAElB,OAAO,MAAM0B,YAAY,GAAGnB,gBAAgB,CAAoB,CAAC,CAAC;EAChEiB,IAAI,EAAE,cAAc;EAEpBG,UAAU,EAAE;IAAExB;EAAQ,CAAC;EAEvByB,KAAK,EAAEjB,qBAAqB,CAAC,CAAC;EAE9BkB,KAAK,EAAE;IACL,mBAAmB,EAAGC,CAAS,IAAK;EACtC,CAAC;EAEDC,KAAKA,CAAEH,KAAK,EAAAI,IAAA,EAAmB;IAAA,IAAjB;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAAF,IAAA;IAC3B,MAAMG,MAAM,GAAG9B,MAAM,CAACR,aAAa,CAAC;IACpC,MAAM;MAAEuC,KAAK;MAAEC;IAAW,CAAC,GAAGnC,MAAM,CAAC,CAAC;IACtC,IAAI,CAACiC,MAAM,EAAE,MAAM,IAAIG,KAAK,CAAC,yEAAyE,CAAC;IAEvG,MAAM;MACJC,UAAU;MACVC,IAAI;MACJC,QAAQ;MACRC,SAAS;MACTC,UAAU;MACVC,SAAS;MACTC,UAAU;MACVC,QAAQ;MACRC,QAAQ;MACRC,SAAS;MACTC,YAAY;MACZC,QAAQ;MACRC;IACF,CAAC,GAAGhB,MAAM;IAEV,MAAMiB,cAAc,GAAGhD,QAAQ,CAAC,MAAM,CAACqC,QAAQ,CAACY,KAAK,GAAGL,SAAS,CAACK,KAAK,GAAGC,SAAS,CAAC;IACpF,MAAM;MAAEC;IAAiB,CAAC,GAAGtD,YAAY,CAACmD,cAAc,CAAC;IACzD,MAAM;MAAEI,gBAAgB;MAAEC;IAAgB,CAAC,GAAG1D,YAAY,CAACwC,UAAU,CAAC;IAEtE,MAAM;MAAEmB,MAAM;MAAEC,QAAQ;MAAEC,GAAG;MAAEC,IAAI;MAAEC,IAAI;MAAEC,KAAK;MAAEC,IAAI;MAAEC;IAAG,CAAC,GAAGzD,SAAS;IACxE,MAAM0D,YAAY,GAAG,CAACR,MAAM,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,IAAI,EAAEC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,EAAE,CAAC;IAEzE,MAAME,WAAW,GAAG/D,QAAQ,CAAC,MAAM;MACjC,IAAIoC,IAAI,CAACa,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAC3B,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACxB,CAAC,CAAC;IAEF,SAASe,YAAYA,CAAEC,CAAgB,EAAEhB,KAAa,EAAE;MACtD,IAAI,CAACa,YAAY,CAACI,QAAQ,CAACD,CAAC,CAACE,GAAG,CAAC,EAAE;MAEnCF,CAAC,CAACG,cAAc,CAAC,CAAC;MAElB,MAAMC,KAAK,GAAGjC,IAAI,CAACa,KAAK,IAAI,GAAG;MAC/B,MAAMqB,KAAK,GAAG,CAAC9C,KAAK,CAACd,GAAG,GAAGc,KAAK,CAACV,GAAG,IAAIuD,KAAK;MAC7C,IAAI,CAACX,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,EAAE,CAAC,CAACK,QAAQ,CAACD,CAAC,CAACE,GAAG,CAAC,EAAE;QAC3C,MAAMI,QAAQ,GAAG7B,QAAQ,CAACO,KAAK,GAC3B,CAACjB,KAAK,CAACiB,KAAK,GAAGS,IAAI,GAAGC,KAAK,EAAElB,UAAU,CAACQ,KAAK,GAAGW,IAAI,GAAGC,EAAE,CAAC,GAC1Dd,YAAY,CAACE,KAAK,KAAKjB,KAAK,CAACiB,KAAK,GAAG,CAACS,IAAI,EAAEG,EAAE,CAAC,GAAG,CAACF,KAAK,EAAEE,EAAE,CAAC;QACjE,MAAMrB,SAAS,GAAG+B,QAAQ,CAACL,QAAQ,CAACD,CAAC,CAACE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnD,MAAMK,UAAU,GAAGP,CAAC,CAACQ,QAAQ,GAAG,CAAC,GAAIR,CAAC,CAACS,OAAO,GAAG,CAAC,GAAG,CAAE;QAEvDzB,KAAK,GAAGA,KAAK,GAAIT,SAAS,GAAG6B,KAAK,GAAGN,WAAW,CAACd,KAAK,CAACuB,UAAU,CAAE;MACrE,CAAC,MAAM,IAAIP,CAAC,CAACE,GAAG,KAAKV,IAAI,EAAE;QACzBR,KAAK,GAAGzB,KAAK,CAACV,GAAG;MACnB,CAAC,MAAM,IAAImD,CAAC,CAACE,GAAG,KAAKX,GAAG,EAAE;QACxBP,KAAK,GAAGzB,KAAK,CAACd,GAAG;MACnB,CAAC,MAAM;QACL,MAAM8B,SAAS,GAAGyB,CAAC,CAACE,GAAG,KAAKZ,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7CN,KAAK,GAAGA,KAAK,GAAIT,SAAS,GAAG6B,KAAK,IAAIC,KAAK,GAAG,GAAG,GAAGA,KAAK,GAAG,EAAE,GAAG,EAAE,CAAE;MACvE;MAEA,OAAOK,IAAI,CAACjE,GAAG,CAACc,KAAK,CAACV,GAAG,EAAE6D,IAAI,CAAC7D,GAAG,CAACU,KAAK,CAACd,GAAG,EAAEuC,KAAK,CAAC,CAAC;IACxD;IAEA,SAAS2B,SAASA,CAAEX,CAAgB,EAAE;MACpC,MAAMY,QAAQ,GAAGb,YAAY,CAACC,CAAC,EAAEzC,KAAK,CAACT,UAAU,CAAC;MAElD8D,QAAQ,IAAI,IAAI,IAAI/C,IAAI,CAAC,mBAAmB,EAAE+C,QAAQ,CAAC;IACzD;IAEAvE,SAAS,CAAC,MAAM;MACd,MAAMwE,kBAAkB,GAAG5E,aAAa,CAAC6C,YAAY,CAACE,KAAK,GAAG,GAAG,GAAGzB,KAAK,CAACR,QAAQ,GAAGQ,KAAK,CAACR,QAAQ,EAAE,GAAG,CAAC;MAEzG,OAAA+D,mBAAA;QAAA,SAAAC,eAAA,CAEW,CACL,gBAAgB,EAChB;UACE,yBAAyB,EAAExD,KAAK,CAAChB,OAAO;UACxC,yBAAyB,EAAEgB,KAAK,CAAChB,OAAO,IAAIqC,YAAY,CAACI;QAC3D,CAAC,EACDzB,KAAK,CAACyD,KAAK,EACXhD,UAAU,CAACgB,KAAK,CACjB;QAAA,SAAAiC,eAAA,CACM,CACL;UACE,2BAA2B,EAAEJ,kBAAkB;UAC/C,uBAAuB,EAAE5E,aAAa,CAACoC,SAAS,CAACW,KAAK;QACxD,CAAC,EACDzB,KAAK,CAAC2D,KAAK,CACZ;QAAA;QAAA,YAEU9C,QAAQ,CAACY,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;QAAA,cACrBzB,KAAK,CAACJ,IAAI;QAAA,iBACPI,KAAK,CAACV,GAAG;QAAA,iBACTU,KAAK,CAACd,GAAG;QAAA,iBACTc,KAAK,CAACT,UAAU;QAAA,iBAChB,CAAC,CAAC4B,QAAQ,CAACM,KAAK;QAAA,oBACbT,SAAS,CAACS,KAAK;QAAA,aACtB,CAACN,QAAQ,CAACM,KAAK,GAAG2B,SAAS,GAAG1B;MAAS,IAAA6B,mBAAA;QAAA,SAAAC,eAAA,CAG1C,CACL,yBAAyB,EACzB5B,gBAAgB,CAACH,KAAK,EACtBE,gBAAgB,CAACF,KAAK,CACvB;QAAA,SAAAiC,eAAA,CACM;UACL,GAAG7B,eAAe,CAACJ;QACrB,CAAC;MAAA,UAAAmC,eAAA,CAAAL,mBAAA;QAAA,SAAAC,eAAA,CAGM,CACL,wBAAwB,EACxB5B,gBAAgB,CAACH,KAAK,CACvB;QAAA,SAAAiC,eAAA,CACO7B,eAAe,CAACJ,KAAK;MAAA,YAAAlD,OAAA,EAClByB,KAAK,CAACP,MAAM,EAAE,IAAI;QAAAoE,MAAA;QAAAC,MAAA;MAAA,MAAAC,YAAA,CAAA7F,gBAAA;QAAA;MAAA;QAAAyB,OAAA,EAAAA,CAAA,MAAAiE,eAAA,CAAAL,mBAAA;UAAA;QAAA,IAAAA,mBAAA;UAAA,SAQlB,CACL,uBAAuB;QACxB,IAAAA,mBAAA,eAGGlD,KAAK,CAAC,aAAa,CAAC,GAAG;UAAEd,UAAU,EAAES,KAAK,CAACT;QAAW,CAAC,CAAC,IAAIS,KAAK,CAACT,UAAU,CAACyE,OAAO,CAACpD,IAAI,CAACa,KAAK,GAAGH,QAAQ,CAACG,KAAK,GAAG,CAAC,CAAC,UAAAwC,MAAA,EARjHlD,UAAU,CAACU,KAAK,IAAIzB,KAAK,CAAChB,OAAO,IAAK+B,UAAU,CAACU,KAAK,KAAK,QAAQ;MAAA;IAevF,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC","ignoreList":[]}
|
1
|
+
{"version":3,"file":"VSliderThumb.js","names":["VSliderSymbol","VScaleTransition","useTextColor","makeComponentProps","useElevation","useRtl","vRipple","computed","inject","convertToUnit","genericComponent","keyValues","propsFactory","useRender","makeVSliderThumbProps","focused","Boolean","max","type","Number","required","min","modelValue","position","ripple","Object","default","name","String","VSliderThumb","directives","props","emits","v","setup","_ref","slots","emit","slider","isRtl","rtlClasses","Error","thumbColor","step","disabled","thumbSize","thumbLabel","direction","isReversed","vertical","readonly","elevation","mousePressed","decimals","indexFromEnd","elevationProps","value","undefined","elevationClasses","textColorClasses","textColorStyles","pageup","pagedown","end","home","left","right","down","up","relevantKeys","multipliers","parseKeydown","e","includes","key","preventDefault","_step","steps","increase","multiplier","shiftKey","ctrlKey","isInteger","Math","onKeydown","newValue","positionPercentage","_createElementVNode","_normalizeClass","class","_normalizeStyle","style","_withDirectives","circle","center","_createVNode","toFixed","_vShow"],"sources":["../../../src/components/VSlider/VSliderThumb.tsx"],"sourcesContent":["// Styles\nimport './VSliderThumb.sass'\n\n// Components\nimport { VSliderSymbol } from './slider'\nimport { VScaleTransition } from '../transitions'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useElevation } from '@/composables/elevation'\nimport { useRtl } from '@/composables/locale'\n\n// Directives\nimport vRipple from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { convertToUnit, genericComponent, keyValues, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport type VSliderThumbSlots = {\n 'thumb-label': { modelValue: number }\n}\n\nexport const makeVSliderThumbProps = propsFactory({\n focused: Boolean,\n max: {\n type: Number,\n required: true,\n },\n min: {\n type: Number,\n required: true,\n },\n modelValue: {\n type: Number,\n required: true,\n },\n position: {\n type: Number,\n required: true,\n },\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: true,\n },\n name: String,\n\n ...makeComponentProps(),\n}, 'VSliderThumb')\n\nexport const VSliderThumb = genericComponent<VSliderThumbSlots>()({\n name: 'VSliderThumb',\n\n directives: { vRipple },\n\n props: makeVSliderThumbProps(),\n\n emits: {\n 'update:modelValue': (v: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const slider = inject(VSliderSymbol)\n const { isRtl, rtlClasses } = useRtl()\n if (!slider) throw new Error('[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider')\n\n const {\n min,\n max,\n thumbColor,\n step,\n disabled,\n thumbSize,\n thumbLabel,\n direction,\n isReversed,\n vertical,\n readonly,\n elevation,\n mousePressed,\n decimals,\n indexFromEnd,\n } = slider\n\n const elevationProps = computed(() => !disabled.value ? elevation.value : undefined)\n const { elevationClasses } = useElevation(elevationProps)\n const { textColorClasses, textColorStyles } = useTextColor(thumbColor)\n\n const { pageup, pagedown, end, home, left, right, down, up } = keyValues\n const relevantKeys = [pageup, pagedown, end, home, left, right, down, up]\n\n const multipliers = computed(() => {\n if (step.value) return [1, 2, 3]\n else return [1, 5, 10]\n })\n\n function parseKeydown (e: KeyboardEvent, value: number) {\n if (!relevantKeys.includes(e.key)) return\n\n e.preventDefault()\n\n const _step = step.value || 0.1\n const steps = (max.value - min.value) / _step\n if ([left, right, down, up].includes(e.key)) {\n const increase = vertical.value\n ? [isRtl.value ? left : right, isReversed.value ? down : up]\n : indexFromEnd.value !== isRtl.value ? [left, up] : [right, up]\n const direction = increase.includes(e.key) ? 1 : -1\n const multiplier = e.shiftKey ? 2 : (e.ctrlKey ? 1 : 0)\n\n if (direction === -1 && value === max.value && !multiplier && !Number.isInteger(steps)) {\n value = value - (steps % 1) * _step\n } else {\n value = value + (direction * _step * multipliers.value[multiplier])\n }\n } else if (e.key === home) {\n value = min.value\n } else if (e.key === end) {\n value = max.value\n } else {\n const direction = e.key === pagedown ? 1 : -1\n value = value - (direction * _step * (steps > 100 ? steps / 10 : 10))\n }\n\n return Math.max(props.min, Math.min(props.max, value))\n }\n\n function onKeydown (e: KeyboardEvent) {\n const newValue = parseKeydown(e, props.modelValue)\n\n newValue != null && emit('update:modelValue', newValue)\n }\n\n useRender(() => {\n const positionPercentage = convertToUnit(indexFromEnd.value ? 100 - props.position : props.position, '%')\n\n return (\n <div\n class={[\n 'v-slider-thumb',\n {\n 'v-slider-thumb--focused': props.focused,\n 'v-slider-thumb--pressed': props.focused && mousePressed.value,\n },\n props.class,\n rtlClasses.value,\n ]}\n style={[\n {\n '--v-slider-thumb-position': positionPercentage,\n '--v-slider-thumb-size': convertToUnit(thumbSize.value),\n },\n props.style,\n ]}\n role=\"slider\"\n tabindex={ disabled.value ? -1 : 0 }\n aria-label={ props.name }\n aria-valuemin={ min.value }\n aria-valuemax={ max.value }\n aria-valuenow={ props.modelValue }\n aria-readonly={ !!readonly.value }\n aria-orientation={ direction.value }\n onKeydown={ !readonly.value ? onKeydown : undefined }\n >\n <div\n class={[\n 'v-slider-thumb__surface',\n textColorClasses.value,\n elevationClasses.value,\n ]}\n style={{\n ...textColorStyles.value,\n }}\n />\n <div\n class={[\n 'v-slider-thumb__ripple',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n v-ripple={[props.ripple, null, ['circle', 'center']]}\n />\n <VScaleTransition origin=\"bottom center\">\n <div\n class=\"v-slider-thumb__label-container\"\n v-show={ (thumbLabel.value && props.focused) || thumbLabel.value === 'always' }\n >\n <div\n class={[\n 'v-slider-thumb__label',\n ]}\n >\n <div>\n { slots['thumb-label']?.({ modelValue: props.modelValue }) ?? props.modelValue.toFixed(step.value ? decimals.value : 1) }\n </div>\n </div>\n </div>\n </VScaleTransition>\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VSliderThumb = InstanceType<typeof VSliderThumb>\n"],"mappings":"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","ignoreList":[]}
|
@@ -82,9 +82,9 @@ export const VSliderTrack = genericComponent()({
|
|
82
82
|
'v-slider-track__tick--first': tick.value === min.value,
|
83
83
|
'v-slider-track__tick--last': tick.value === max.value
|
84
84
|
}]),
|
85
|
-
"style":
|
85
|
+
"style": {
|
86
86
|
[startDir.value]: directionValue
|
87
|
-
}
|
87
|
+
}
|
88
88
|
}, [(tick.label || slots['tick-label']) && _createElementVNode("div", {
|
89
89
|
"class": "v-slider-track__tick-label"
|
90
90
|
}, [slots['tick-label']?.({
|
@@ -104,16 +104,16 @@ export const VSliderTrack = genericComponent()({
|
|
104
104
|
"class": _normalizeClass(['v-slider-track__background', trackColorClasses.value, {
|
105
105
|
'v-slider-track__background--opacity': !!color.value || !trackFillColor.value
|
106
106
|
}]),
|
107
|
-
"style":
|
107
|
+
"style": {
|
108
108
|
...backgroundStyles.value,
|
109
109
|
...trackColorStyles.value
|
110
|
-
}
|
110
|
+
}
|
111
111
|
}, null), _createElementVNode("div", {
|
112
112
|
"class": _normalizeClass(['v-slider-track__fill', trackFillColorClasses.value]),
|
113
|
-
"style":
|
113
|
+
"style": {
|
114
114
|
...trackFillStyles.value,
|
115
115
|
...trackFillColorStyles.value
|
116
|
-
}
|
116
|
+
}
|
117
117
|
}, null), showTicks.value && _createElementVNode("div", {
|
118
118
|
"class": _normalizeClass(['v-slider-track__ticks', {
|
119
119
|
'v-slider-track__ticks--always-show': showTicks.value === 'always'
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VSliderTrack.js","names":["VSliderSymbol","useBackgroundColor","makeComponentProps","useRounded","computed","inject","convertToUnit","genericComponent","propsFactory","useRender","makeVSliderTrackProps","start","type","Number","required","stop","VSliderTrack","name","props","emits","setup","_ref","slots","slider","Error","color","parsedTicks","rounded","showTicks","tickSize","trackColor","trackFillColor","trackSize","vertical","min","max","indexFromEnd","roundedClasses","backgroundColorClasses","trackFillColorClasses","backgroundColorStyles","trackFillColorStyles","trackColorClasses","trackColorStyles","startDir","value","endDir","backgroundStyles","trackFillWidth","trackFillStyles","computedTicks","ticks","slice","reverse","map","tick","index","directionValue","position","undefined","_createElementVNode","_normalizeClass","
|
1
|
+
{"version":3,"file":"VSliderTrack.js","names":["VSliderSymbol","useBackgroundColor","makeComponentProps","useRounded","computed","inject","convertToUnit","genericComponent","propsFactory","useRender","makeVSliderTrackProps","start","type","Number","required","stop","VSliderTrack","name","props","emits","setup","_ref","slots","slider","Error","color","parsedTicks","rounded","showTicks","tickSize","trackColor","trackFillColor","trackSize","vertical","min","max","indexFromEnd","roundedClasses","backgroundColorClasses","trackFillColorClasses","backgroundColorStyles","trackFillColorStyles","trackColorClasses","trackColorStyles","startDir","value","endDir","backgroundStyles","trackFillWidth","trackFillStyles","computedTicks","ticks","slice","reverse","map","tick","index","directionValue","position","undefined","_createElementVNode","_normalizeClass","label","class","_normalizeStyle","style"],"sources":["../../../src/components/VSlider/VSliderTrack.tsx"],"sourcesContent":["// Styles\nimport './VSliderTrack.sass'\n\n// Components\nimport { VSliderSymbol } from './slider'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useRounded } from '@/composables/rounded'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Tick } from './slider'\n\nexport type VSliderTrackSlots = {\n 'tick-label': { tick: Tick, index: number }\n}\n\nexport const makeVSliderTrackProps = propsFactory({\n start: {\n type: Number,\n required: true,\n },\n stop: {\n type: Number,\n required: true,\n },\n\n ...makeComponentProps(),\n}, 'VSliderTrack')\n\nexport const VSliderTrack = genericComponent<VSliderTrackSlots>()({\n name: 'VSliderTrack',\n\n props: makeVSliderTrackProps(),\n\n emits: {},\n\n setup (props, { slots }) {\n const slider = inject(VSliderSymbol)\n\n if (!slider) throw new Error('[Vuetify] v-slider-track must be inside v-slider or v-range-slider')\n\n const {\n color,\n parsedTicks,\n rounded,\n showTicks,\n tickSize,\n trackColor,\n trackFillColor,\n trackSize,\n vertical,\n min,\n max,\n indexFromEnd,\n } = slider\n\n const { roundedClasses } = useRounded(rounded)\n\n const {\n backgroundColorClasses: trackFillColorClasses,\n backgroundColorStyles: trackFillColorStyles,\n } = useBackgroundColor(trackFillColor)\n\n const {\n backgroundColorClasses: trackColorClasses,\n backgroundColorStyles: trackColorStyles,\n } = useBackgroundColor(trackColor)\n\n const startDir = computed(() => `inset-${vertical.value ? 'block' : 'inline'}-${indexFromEnd.value ? 'end' : 'start'}`)\n const endDir = computed(() => vertical.value ? 'height' : 'width')\n\n const backgroundStyles = computed(() => {\n return {\n [startDir.value]: '0%',\n [endDir.value]: '100%',\n }\n })\n\n const trackFillWidth = computed(() => props.stop - props.start)\n\n const trackFillStyles = computed(() => {\n return {\n [startDir.value]: convertToUnit(props.start, '%'),\n [endDir.value]: convertToUnit(trackFillWidth.value, '%'),\n }\n })\n\n const computedTicks = computed(() => {\n if (!showTicks.value) return []\n\n const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value\n\n return ticks.map((tick, index) => {\n const directionValue = tick.value !== min.value && tick.value !== max.value ? convertToUnit(tick.position, '%') : undefined\n\n return (\n <div\n key={ tick.value }\n class={[\n 'v-slider-track__tick',\n {\n 'v-slider-track__tick--filled': tick.position >= props.start && tick.position <= props.stop,\n 'v-slider-track__tick--first': tick.value === min.value,\n 'v-slider-track__tick--last': tick.value === max.value,\n },\n ]}\n style={{ [startDir.value]: directionValue }}\n >\n {\n (tick.label || slots['tick-label']) && (\n <div class=\"v-slider-track__tick-label\">\n { slots['tick-label']?.({ tick, index }) ?? tick.label }\n </div>\n )\n }\n </div>\n )\n })\n })\n\n useRender(() => {\n return (\n <div\n class={[\n 'v-slider-track',\n roundedClasses.value,\n props.class,\n ]}\n style={[\n {\n '--v-slider-track-size': convertToUnit(trackSize.value),\n '--v-slider-tick-size': convertToUnit(tickSize.value),\n },\n props.style,\n ]}\n >\n <div\n class={[\n 'v-slider-track__background',\n trackColorClasses.value,\n {\n 'v-slider-track__background--opacity': !!color.value || !trackFillColor.value,\n },\n ]}\n style={{\n ...backgroundStyles.value,\n ...trackColorStyles.value,\n }}\n />\n <div\n class={[\n 'v-slider-track__fill',\n trackFillColorClasses.value,\n ]}\n style={{\n ...trackFillStyles.value,\n ...trackFillColorStyles.value,\n }}\n />\n\n { showTicks.value && (\n <div\n class={[\n 'v-slider-track__ticks',\n {\n 'v-slider-track__ticks--always-show': showTicks.value === 'always',\n },\n ]}\n >\n { computedTicks.value }\n </div>\n )}\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VSliderTrack = InstanceType<typeof VSliderTrack>\n"],"mappings":"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","ignoreList":[]}
|
@@ -91,7 +91,10 @@ export const useSteps = props => {
|
|
91
91
|
if (step.value <= 0) return value;
|
92
92
|
const clamped = clamp(value, min.value, max.value);
|
93
93
|
const offset = min.value % step.value;
|
94
|
-
|
94
|
+
let newValue = Math.round((clamped - offset) / step.value) * step.value + offset;
|
95
|
+
if (clamped > newValue && newValue + step.value > max.value) {
|
96
|
+
newValue = max.value;
|
97
|
+
}
|
95
98
|
return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value));
|
96
99
|
}
|
97
100
|
return {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"slider.js","names":["makeElevationProps","useRtl","makeRoundedProps","computed","nextTick","provide","ref","shallowRef","toRef","clamp","createRange","getDecimals","propsFactory","VSliderSymbol","Symbol","for","getOffset","e","el","direction","vertical","rect","getBoundingClientRect","touch","touches","clientY","top","height","clientX","left","width","getPosition","position","length","changedTouches","makeSliderProps","disabled","type","Boolean","default","error","readonly","max","Number","String","min","step","thumbColor","thumbLabel","undefined","validator","v","thumbSize","showTicks","ticks","Array","Object","tickSize","color","trackColor","trackFillColor","trackSize","includes","reverse","elevation","ripple","useSteps","props","parseFloat","decimals","Math","value","roundValue","clamped","offset","newValue","round","toFixed","useSlider","_ref","steps","onSliderStart","onSliderMove","onSliderEnd","getActiveThumb","isRtl","isReversed","indexFromEnd","parseInt","numTicks","mousePressed","startOffset","trackContainerRef","activeThumbRef","parseMouseMove","$el","start","trackStart","trackLength","clickOffset","clickPos","handleStop","handleStart","contains","target","focus","moveListenerOptions","passive","capture","onMouseMove","onSliderMouseUp","stopPropagation","preventDefault","window","removeEventListener","onSliderTouchend","onSliderTouchstart","addEventListener","onSliderMousedown","button","val","percentage","isNaN","parsedTicks","Infinity","map","t","isArray","label","toString","keys","key","hasLabels","some","_ref2","data","rounded"],"sources":["../../../src/components/VSlider/slider.ts"],"sourcesContent":["/* eslint-disable max-statements */\n// Composables\nimport { makeElevationProps } from '@/composables/elevation'\nimport { useRtl } from '@/composables/locale'\nimport { makeRoundedProps } from '@/composables/rounded'\n\n// Utilities\nimport { computed, nextTick, provide, ref, shallowRef, toRef } from 'vue'\nimport { clamp, createRange, getDecimals, propsFactory } from '@/util'\n\n// Types\nimport type { ExtractPropTypes, InjectionKey, PropType, Ref } from 'vue'\nimport type { VSliderTrack } from './VSliderTrack'\n\nexport type Tick = {\n value: number\n position: number\n label?: string\n}\n\ntype SliderProvide = {\n activeThumbRef: Ref<HTMLElement | undefined>\n color: Ref<string | undefined>\n decimals: Ref<number>\n direction: Ref<'vertical' | 'horizontal'>\n disabled: Ref<boolean | null | undefined>\n elevation: Ref<number | string | undefined>\n min: Ref<number>\n max: Ref<number>\n mousePressed: Ref<boolean>\n numTicks: Ref<number>\n onSliderMousedown: (e: MouseEvent) => void\n onSliderTouchstart: (e: TouchEvent) => void\n parseMouseMove: (e: MouseEvent | TouchEvent) => number | void\n position: (val: number) => number\n readonly: Ref<boolean | null | undefined>\n rounded: Ref<boolean | number | string | undefined>\n roundValue: (value: number) => number\n thumbLabel: Ref<boolean | string | undefined>\n showTicks: Ref<boolean | 'always'>\n startOffset: Ref<number>\n step: Ref<number>\n thumbSize: Ref<number>\n thumbColor: Ref<string | undefined>\n trackColor: Ref<string | undefined>\n trackFillColor: Ref<string | undefined>\n trackSize: Ref<number>\n ticks: Ref<readonly number[] | Record<string, string> | undefined>\n tickSize: Ref<number>\n trackContainerRef: Ref<VSliderTrack | undefined>\n vertical: Ref<boolean>\n parsedTicks: Ref<Tick[]>\n hasLabels: Ref<boolean>\n isReversed: Ref<boolean>\n indexFromEnd: Ref<boolean>\n}\n\nexport const VSliderSymbol: InjectionKey<SliderProvide> = Symbol.for('vuetify:v-slider')\n\nexport function getOffset (e: MouseEvent | TouchEvent, el: HTMLElement, direction: string) {\n const vertical = direction === 'vertical'\n const rect = el.getBoundingClientRect()\n const touch = 'touches' in e ? e.touches[0] : e\n return vertical\n ? touch.clientY - (rect.top + rect.height / 2)\n : touch.clientX - (rect.left + rect.width / 2)\n}\n\nfunction getPosition (e: MouseEvent | TouchEvent, position: 'clientX' | 'clientY'): number {\n if ('touches' in e && e.touches.length) return e.touches[0][position]\n else if ('changedTouches' in e && e.changedTouches.length) return e.changedTouches[0][position]\n else return (e as MouseEvent)[position]\n}\n\nexport const makeSliderProps = propsFactory({\n disabled: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n error: Boolean,\n readonly: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n max: {\n type: [Number, String],\n default: 100,\n },\n min: {\n type: [Number, String],\n default: 0,\n },\n step: {\n type: [Number, String],\n default: 0,\n },\n thumbColor: String,\n thumbLabel: {\n type: [Boolean, String] as PropType<boolean | 'always' | undefined>,\n default: undefined,\n validator: (v: any) => typeof v === 'boolean' || v === 'always',\n },\n thumbSize: {\n type: [Number, String],\n default: 20,\n },\n showTicks: {\n type: [Boolean, String] as PropType<boolean | 'always'>,\n default: false,\n validator: (v: any) => typeof v === 'boolean' || v === 'always',\n },\n ticks: {\n type: [Array, Object] as PropType<readonly number[] | Record<number, string>>,\n },\n tickSize: {\n type: [Number, String],\n default: 2,\n },\n color: String,\n trackColor: String,\n trackFillColor: String,\n trackSize: {\n type: [Number, String],\n default: 4,\n },\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n validator: (v: any) => ['vertical', 'horizontal'].includes(v),\n },\n reverse: Boolean,\n\n ...makeRoundedProps(),\n ...makeElevationProps({\n elevation: 2,\n }),\n ripple: {\n type: Boolean,\n default: true,\n },\n}, 'Slider')\n\ntype SliderProps = ExtractPropTypes<ReturnType<typeof makeSliderProps>>\n\ntype SliderData = {\n value: number\n}\n\nexport const useSteps = (props: SliderProps) => {\n const min = computed(() => parseFloat(props.min))\n const max = computed(() => parseFloat(props.max))\n const step = computed(() => Number(props.step) > 0 ? parseFloat(props.step) : 0)\n const decimals = computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)))\n\n function roundValue (value: string | number) {\n value = parseFloat(value)\n\n if (step.value <= 0) return value\n\n const clamped = clamp(value, min.value, max.value)\n const offset = min.value % step.value\n const newValue = Math.round((clamped - offset) / step.value) * step.value + offset\n\n return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value))\n }\n\n return { min, max, step, decimals, roundValue }\n}\n\nexport const useSlider = ({\n props,\n steps,\n onSliderStart,\n onSliderMove,\n onSliderEnd,\n getActiveThumb,\n}: {\n props: SliderProps\n steps: ReturnType<typeof useSteps>\n onSliderEnd: (data: SliderData) => void\n onSliderStart: (data: SliderData) => void\n onSliderMove: (data: SliderData) => void\n getActiveThumb: (e: MouseEvent | TouchEvent) => HTMLElement\n}) => {\n const { isRtl } = useRtl()\n const isReversed = toRef(() => props.reverse)\n const vertical = computed(() => props.direction === 'vertical')\n const indexFromEnd = computed(() => vertical.value !== isReversed.value)\n\n const { min, max, step, decimals, roundValue } = steps\n\n const thumbSize = computed(() => parseInt(props.thumbSize, 10))\n const tickSize = computed(() => parseInt(props.tickSize, 10))\n const trackSize = computed(() => parseInt(props.trackSize, 10))\n const numTicks = computed(() => (max.value - min.value) / step.value)\n const disabled = toRef(() => props.disabled)\n\n const thumbColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color)\n const trackColor = computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color)\n const trackFillColor = computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color)\n\n const mousePressed = shallowRef(false)\n\n const startOffset = shallowRef(0)\n const trackContainerRef = ref<VSliderTrack | undefined>()\n const activeThumbRef = ref<HTMLElement | undefined>()\n\n function parseMouseMove (e: MouseEvent | TouchEvent): number | void {\n const el: HTMLElement = trackContainerRef.value?.$el\n\n if (!el) return\n\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 } = el.getBoundingClientRect()\n const clickOffset = getPosition(e, position)\n\n // It is possible for left to be NaN, force to number\n let clickPos = clamp((clickOffset - trackStart - startOffset.value) / trackLength) || 0\n\n if (vertical ? indexFromEnd.value : indexFromEnd.value !== isRtl.value) clickPos = 1 - clickPos\n\n return roundValue(min.value + clickPos * (max.value - min.value))\n }\n\n const handleStop = (e: MouseEvent | TouchEvent) => {\n const value = parseMouseMove(e)\n if (value != null) {\n onSliderEnd({ value })\n }\n\n mousePressed.value = false\n startOffset.value = 0\n }\n\n const handleStart = (e: MouseEvent | TouchEvent) => {\n const value = parseMouseMove(e)\n activeThumbRef.value = getActiveThumb(e)\n\n if (!activeThumbRef.value) return\n\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 if (value != null) {\n onSliderMove({ value })\n }\n }\n\n if (value != null) {\n onSliderStart({ value })\n }\n nextTick(() => activeThumbRef.value?.focus())\n }\n\n const moveListenerOptions = { passive: true, capture: true }\n\n function onMouseMove (e: MouseEvent | TouchEvent) {\n const value = parseMouseMove(e)\n if (value != null) {\n onSliderMove({ value })\n }\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 if (e.button !== 0) return\n\n e.preventDefault()\n\n handleStart(e)\n\n window.addEventListener('mousemove', onMouseMove, moveListenerOptions)\n window.addEventListener('mouseup', onSliderMouseUp, { passive: false })\n }\n\n const position = (val: number) => {\n const percentage = (val - min.value) / (max.value - min.value) * 100\n return clamp(isNaN(percentage) ? 0 : percentage, 0, 100)\n }\n\n const showTicks = toRef(() => props.showTicks)\n const parsedTicks = computed<Tick[]>(() => {\n if (!showTicks.value) return []\n\n if (!props.ticks) {\n return numTicks.value !== Infinity ? createRange(numTicks.value + 1).map(t => {\n const value = min.value + (t * step.value)\n return {\n value,\n position: position(value),\n }\n }) : []\n }\n if (Array.isArray(props.ticks)) return props.ticks.map(t => ({ value: t, position: position(t), label: t.toString() }))\n return Object.keys(props.ticks).map(key => ({\n value: parseFloat(key),\n position: position(parseFloat(key)),\n label: (props.ticks as Record<string, string>)[key],\n }))\n })\n\n const hasLabels = computed(() => parsedTicks.value.some(({ label }) => !!label))\n\n const data: SliderProvide = {\n activeThumbRef,\n color: toRef(() => props.color),\n decimals,\n disabled,\n direction: toRef(() => props.direction),\n elevation: toRef(() => props.elevation),\n hasLabels,\n isReversed,\n indexFromEnd,\n min,\n max,\n mousePressed,\n numTicks,\n onSliderMousedown,\n onSliderTouchstart,\n parsedTicks,\n parseMouseMove,\n position,\n readonly: toRef(() => props.readonly),\n rounded: toRef(() => props.rounded),\n roundValue,\n showTicks,\n startOffset,\n step,\n thumbSize,\n thumbColor,\n thumbLabel: toRef(() => props.thumbLabel),\n ticks: toRef(() => props.ticks),\n tickSize,\n trackColor,\n trackContainerRef,\n trackFillColor,\n trackSize,\n vertical,\n }\n\n provide(VSliderSymbol, data)\n\n return data\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"slider.js","names":["makeElevationProps","useRtl","makeRoundedProps","computed","nextTick","provide","ref","shallowRef","toRef","clamp","createRange","getDecimals","propsFactory","VSliderSymbol","Symbol","for","getOffset","e","el","direction","vertical","rect","getBoundingClientRect","touch","touches","clientY","top","height","clientX","left","width","getPosition","position","length","changedTouches","makeSliderProps","disabled","type","Boolean","default","error","readonly","max","Number","String","min","step","thumbColor","thumbLabel","undefined","validator","v","thumbSize","showTicks","ticks","Array","Object","tickSize","color","trackColor","trackFillColor","trackSize","includes","reverse","elevation","ripple","useSteps","props","parseFloat","decimals","Math","value","roundValue","clamped","offset","newValue","round","toFixed","useSlider","_ref","steps","onSliderStart","onSliderMove","onSliderEnd","getActiveThumb","isRtl","isReversed","indexFromEnd","parseInt","numTicks","mousePressed","startOffset","trackContainerRef","activeThumbRef","parseMouseMove","$el","start","trackStart","trackLength","clickOffset","clickPos","handleStop","handleStart","contains","target","focus","moveListenerOptions","passive","capture","onMouseMove","onSliderMouseUp","stopPropagation","preventDefault","window","removeEventListener","onSliderTouchend","onSliderTouchstart","addEventListener","onSliderMousedown","button","val","percentage","isNaN","parsedTicks","Infinity","map","t","isArray","label","toString","keys","key","hasLabels","some","_ref2","data","rounded"],"sources":["../../../src/components/VSlider/slider.ts"],"sourcesContent":["/* eslint-disable max-statements */\n// Composables\nimport { makeElevationProps } from '@/composables/elevation'\nimport { useRtl } from '@/composables/locale'\nimport { makeRoundedProps } from '@/composables/rounded'\n\n// Utilities\nimport { computed, nextTick, provide, ref, shallowRef, toRef } from 'vue'\nimport { clamp, createRange, getDecimals, propsFactory } from '@/util'\n\n// Types\nimport type { ExtractPropTypes, InjectionKey, PropType, Ref } from 'vue'\nimport type { VSliderTrack } from './VSliderTrack'\n\nexport type Tick = {\n value: number\n position: number\n label?: string\n}\n\ntype SliderProvide = {\n activeThumbRef: Ref<HTMLElement | undefined>\n color: Ref<string | undefined>\n decimals: Ref<number>\n direction: Ref<'vertical' | 'horizontal'>\n disabled: Ref<boolean | null | undefined>\n elevation: Ref<number | string | undefined>\n min: Ref<number>\n max: Ref<number>\n mousePressed: Ref<boolean>\n numTicks: Ref<number>\n onSliderMousedown: (e: MouseEvent) => void\n onSliderTouchstart: (e: TouchEvent) => void\n parseMouseMove: (e: MouseEvent | TouchEvent) => number | void\n position: (val: number) => number\n readonly: Ref<boolean | null | undefined>\n rounded: Ref<boolean | number | string | undefined>\n roundValue: (value: number) => number\n thumbLabel: Ref<boolean | string | undefined>\n showTicks: Ref<boolean | 'always'>\n startOffset: Ref<number>\n step: Ref<number>\n thumbSize: Ref<number>\n thumbColor: Ref<string | undefined>\n trackColor: Ref<string | undefined>\n trackFillColor: Ref<string | undefined>\n trackSize: Ref<number>\n ticks: Ref<readonly number[] | Record<string, string> | undefined>\n tickSize: Ref<number>\n trackContainerRef: Ref<VSliderTrack | undefined>\n vertical: Ref<boolean>\n parsedTicks: Ref<Tick[]>\n hasLabels: Ref<boolean>\n isReversed: Ref<boolean>\n indexFromEnd: Ref<boolean>\n}\n\nexport const VSliderSymbol: InjectionKey<SliderProvide> = Symbol.for('vuetify:v-slider')\n\nexport function getOffset (e: MouseEvent | TouchEvent, el: HTMLElement, direction: string) {\n const vertical = direction === 'vertical'\n const rect = el.getBoundingClientRect()\n const touch = 'touches' in e ? e.touches[0] : e\n return vertical\n ? touch.clientY - (rect.top + rect.height / 2)\n : touch.clientX - (rect.left + rect.width / 2)\n}\n\nfunction getPosition (e: MouseEvent | TouchEvent, position: 'clientX' | 'clientY'): number {\n if ('touches' in e && e.touches.length) return e.touches[0][position]\n else if ('changedTouches' in e && e.changedTouches.length) return e.changedTouches[0][position]\n else return (e as MouseEvent)[position]\n}\n\nexport const makeSliderProps = propsFactory({\n disabled: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n error: Boolean,\n readonly: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n max: {\n type: [Number, String],\n default: 100,\n },\n min: {\n type: [Number, String],\n default: 0,\n },\n step: {\n type: [Number, String],\n default: 0,\n },\n thumbColor: String,\n thumbLabel: {\n type: [Boolean, String] as PropType<boolean | 'always' | undefined>,\n default: undefined,\n validator: (v: any) => typeof v === 'boolean' || v === 'always',\n },\n thumbSize: {\n type: [Number, String],\n default: 20,\n },\n showTicks: {\n type: [Boolean, String] as PropType<boolean | 'always'>,\n default: false,\n validator: (v: any) => typeof v === 'boolean' || v === 'always',\n },\n ticks: {\n type: [Array, Object] as PropType<readonly number[] | Record<number, string>>,\n },\n tickSize: {\n type: [Number, String],\n default: 2,\n },\n color: String,\n trackColor: String,\n trackFillColor: String,\n trackSize: {\n type: [Number, String],\n default: 4,\n },\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n validator: (v: any) => ['vertical', 'horizontal'].includes(v),\n },\n reverse: Boolean,\n\n ...makeRoundedProps(),\n ...makeElevationProps({\n elevation: 2,\n }),\n ripple: {\n type: Boolean,\n default: true,\n },\n}, 'Slider')\n\ntype SliderProps = ExtractPropTypes<ReturnType<typeof makeSliderProps>>\n\ntype SliderData = {\n value: number\n}\n\nexport const useSteps = (props: SliderProps) => {\n const min = computed(() => parseFloat(props.min))\n const max = computed(() => parseFloat(props.max))\n const step = computed(() => Number(props.step) > 0 ? parseFloat(props.step) : 0)\n const decimals = computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)))\n\n function roundValue (value: string | number) {\n value = parseFloat(value)\n\n if (step.value <= 0) return value\n\n const clamped = clamp(value, min.value, max.value)\n const offset = min.value % step.value\n let newValue = Math.round((clamped - offset) / step.value) * step.value + offset\n\n if (clamped > newValue && newValue + step.value > max.value) {\n newValue = max.value\n }\n\n return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value))\n }\n\n return { min, max, step, decimals, roundValue }\n}\n\nexport const useSlider = ({\n props,\n steps,\n onSliderStart,\n onSliderMove,\n onSliderEnd,\n getActiveThumb,\n}: {\n props: SliderProps\n steps: ReturnType<typeof useSteps>\n onSliderEnd: (data: SliderData) => void\n onSliderStart: (data: SliderData) => void\n onSliderMove: (data: SliderData) => void\n getActiveThumb: (e: MouseEvent | TouchEvent) => HTMLElement\n}) => {\n const { isRtl } = useRtl()\n const isReversed = toRef(() => props.reverse)\n const vertical = computed(() => props.direction === 'vertical')\n const indexFromEnd = computed(() => vertical.value !== isReversed.value)\n\n const { min, max, step, decimals, roundValue } = steps\n\n const thumbSize = computed(() => parseInt(props.thumbSize, 10))\n const tickSize = computed(() => parseInt(props.tickSize, 10))\n const trackSize = computed(() => parseInt(props.trackSize, 10))\n const numTicks = computed(() => (max.value - min.value) / step.value)\n const disabled = toRef(() => props.disabled)\n\n const thumbColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color)\n const trackColor = computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color)\n const trackFillColor = computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color)\n\n const mousePressed = shallowRef(false)\n\n const startOffset = shallowRef(0)\n const trackContainerRef = ref<VSliderTrack | undefined>()\n const activeThumbRef = ref<HTMLElement | undefined>()\n\n function parseMouseMove (e: MouseEvent | TouchEvent): number | void {\n const el: HTMLElement = trackContainerRef.value?.$el\n\n if (!el) return\n\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 } = el.getBoundingClientRect()\n const clickOffset = getPosition(e, position)\n\n // It is possible for left to be NaN, force to number\n let clickPos = clamp((clickOffset - trackStart - startOffset.value) / trackLength) || 0\n\n if (vertical ? indexFromEnd.value : indexFromEnd.value !== isRtl.value) clickPos = 1 - clickPos\n\n return roundValue(min.value + clickPos * (max.value - min.value))\n }\n\n const handleStop = (e: MouseEvent | TouchEvent) => {\n const value = parseMouseMove(e)\n if (value != null) {\n onSliderEnd({ value })\n }\n\n mousePressed.value = false\n startOffset.value = 0\n }\n\n const handleStart = (e: MouseEvent | TouchEvent) => {\n const value = parseMouseMove(e)\n activeThumbRef.value = getActiveThumb(e)\n\n if (!activeThumbRef.value) return\n\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 if (value != null) {\n onSliderMove({ value })\n }\n }\n\n if (value != null) {\n onSliderStart({ value })\n }\n nextTick(() => activeThumbRef.value?.focus())\n }\n\n const moveListenerOptions = { passive: true, capture: true }\n\n function onMouseMove (e: MouseEvent | TouchEvent) {\n const value = parseMouseMove(e)\n if (value != null) {\n onSliderMove({ value })\n }\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 if (e.button !== 0) return\n\n e.preventDefault()\n\n handleStart(e)\n\n window.addEventListener('mousemove', onMouseMove, moveListenerOptions)\n window.addEventListener('mouseup', onSliderMouseUp, { passive: false })\n }\n\n const position = (val: number) => {\n const percentage = (val - min.value) / (max.value - min.value) * 100\n return clamp(isNaN(percentage) ? 0 : percentage, 0, 100)\n }\n\n const showTicks = toRef(() => props.showTicks)\n const parsedTicks = computed<Tick[]>(() => {\n if (!showTicks.value) return []\n\n if (!props.ticks) {\n return numTicks.value !== Infinity ? createRange(numTicks.value + 1).map(t => {\n const value = min.value + (t * step.value)\n return {\n value,\n position: position(value),\n }\n }) : []\n }\n if (Array.isArray(props.ticks)) return props.ticks.map(t => ({ value: t, position: position(t), label: t.toString() }))\n return Object.keys(props.ticks).map(key => ({\n value: parseFloat(key),\n position: position(parseFloat(key)),\n label: (props.ticks as Record<string, string>)[key],\n }))\n })\n\n const hasLabels = computed(() => parsedTicks.value.some(({ label }) => !!label))\n\n const data: SliderProvide = {\n activeThumbRef,\n color: toRef(() => props.color),\n decimals,\n disabled,\n direction: toRef(() => props.direction),\n elevation: toRef(() => props.elevation),\n hasLabels,\n isReversed,\n indexFromEnd,\n min,\n max,\n mousePressed,\n numTicks,\n onSliderMousedown,\n onSliderTouchstart,\n parsedTicks,\n parseMouseMove,\n position,\n readonly: toRef(() => props.readonly),\n rounded: toRef(() => props.rounded),\n roundValue,\n showTicks,\n startOffset,\n step,\n thumbSize,\n thumbColor,\n thumbLabel: toRef(() => props.thumbLabel),\n ticks: toRef(() => props.ticks),\n tickSize,\n trackColor,\n trackContainerRef,\n trackFillColor,\n trackSize,\n vertical,\n }\n\n provide(VSliderSymbol, data)\n\n return data\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { createElementVNode as _createElementVNode,
|
1
|
+
import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createVNode as _createVNode } from "vue";
|
2
2
|
// Styles
|
3
3
|
import "./VTable.css";
|
4
4
|
|
@@ -45,9 +45,9 @@ export const VTable = genericComponent()({
|
|
45
45
|
}, {
|
46
46
|
default: () => [slots.top?.(), slots.default ? _createElementVNode("div", {
|
47
47
|
"class": "v-table__wrapper",
|
48
|
-
"style":
|
48
|
+
"style": {
|
49
49
|
height: convertToUnit(props.height)
|
50
|
-
}
|
50
|
+
}
|
51
51
|
}, [_createElementVNode("table", null, [slots.default()])]) : slots.wrapper?.(), slots.bottom?.()]
|
52
52
|
}));
|
53
53
|
return {};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VTable.js","names":["makeComponentProps","makeDensityProps","useDensity","makeTagProps","makeThemeProps","provideTheme","convertToUnit","genericComponent","propsFactory","useRender","makeVTableProps","fixedHeader","Boolean","fixedFooter","height","Number","String","hover","VTable","name","props","setup","_ref","slots","emit","themeClasses","densityClasses","_createVNode","tag","_normalizeClass","top","bottom","value","class","_normalizeStyle","style","default","_createElementVNode","wrapper"],"sources":["../../../src/components/VTable/VTable.tsx"],"sourcesContent":["// Styles\nimport './VTable.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\nexport type VTableSlots = {\n default: never\n top: never\n bottom: never\n wrapper: never\n}\n\nexport const makeVTableProps = propsFactory({\n fixedHeader: Boolean,\n fixedFooter: Boolean,\n height: [Number, String],\n hover: Boolean,\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VTable')\n\nexport const VTable = genericComponent<VTableSlots>()({\n name: 'VTable',\n\n props: makeVTableProps(),\n\n setup (props, { slots, emit }) {\n const { themeClasses } = provideTheme(props)\n const { densityClasses } = useDensity(props)\n\n useRender(() => (\n <props.tag\n class={[\n 'v-table',\n {\n 'v-table--fixed-height': !!props.height,\n 'v-table--fixed-header': props.fixedHeader,\n 'v-table--fixed-footer': props.fixedFooter,\n 'v-table--has-top': !!slots.top,\n 'v-table--has-bottom': !!slots.bottom,\n 'v-table--hover': props.hover,\n },\n themeClasses.value,\n densityClasses.value,\n props.class,\n ]}\n style={ props.style }\n >\n { slots.top?.() }\n\n { slots.default ? (\n <div\n class=\"v-table__wrapper\"\n style={{ height: convertToUnit(props.height) }}\n >\n <table>\n { slots.default() }\n </table>\n </div>\n ) : slots.wrapper?.()}\n\n { slots.bottom?.() }\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VTable = InstanceType<typeof VTable>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,YAAY;AAAA,SACZC,cAAc,EAAEC,YAAY,sCAErC;AAAA,SACSC,aAAa,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS;AASjE,OAAO,MAAMC,eAAe,GAAGF,YAAY,CAAC;EAC1CG,WAAW,EAAEC,OAAO;EACpBC,WAAW,EAAED,OAAO;EACpBE,MAAM,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAC;EACxBC,KAAK,EAAEL,OAAO;EAEd,GAAGZ,kBAAkB,CAAC,CAAC;EACvB,GAAGC,gBAAgB,CAAC,CAAC;EACrB,GAAGE,YAAY,CAAC,CAAC;EACjB,GAAGC,cAAc,CAAC;AACpB,CAAC,EAAE,QAAQ,CAAC;AAEZ,OAAO,MAAMc,MAAM,GAAGX,gBAAgB,CAAc,CAAC,CAAC;EACpDY,IAAI,EAAE,QAAQ;EAEdC,KAAK,EAAEV,eAAe,CAAC,CAAC;EAExBW,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAmB;IAAA,IAAjB;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAAF,IAAA;IAC3B,MAAM;MAAEG;IAAa,CAAC,GAAGpB,YAAY,CAACe,KAAK,CAAC;IAC5C,MAAM;MAAEM;IAAe,CAAC,GAAGxB,UAAU,CAACkB,KAAK,CAAC;IAE5CX,SAAS,CAAC,MAAAkB,YAAA,CAAAP,KAAA,CAAAQ,GAAA;MAAA,SAAAC,eAAA,CAEC,CACL,SAAS,EACT;QACE,uBAAuB,EAAE,CAAC,CAACT,KAAK,CAACN,MAAM;QACvC,uBAAuB,EAAEM,KAAK,CAACT,WAAW;QAC1C,uBAAuB,EAAES,KAAK,CAACP,WAAW;QAC1C,kBAAkB,EAAE,CAAC,CAACU,KAAK,CAACO,GAAG;QAC/B,qBAAqB,EAAE,CAAC,CAACP,KAAK,CAACQ,MAAM;QACrC,gBAAgB,EAAEX,KAAK,CAACH;MAC1B,CAAC,EACDQ,YAAY,CAACO,KAAK,EAClBN,cAAc,CAACM,KAAK,EACpBZ,KAAK,CAACa,KAAK,CACZ;MAAA,SAAAC,eAAA,CACOd,KAAK,CAACe,KAAK;IAAA;MAAAC,OAAA,EAAAA,CAAA,MAEjBb,KAAK,CAACO,GAAG,GAAG,CAAC,EAEbP,KAAK,CAACa,OAAO,GAAAC,mBAAA;QAAA;QAAA,
|
1
|
+
{"version":3,"file":"VTable.js","names":["makeComponentProps","makeDensityProps","useDensity","makeTagProps","makeThemeProps","provideTheme","convertToUnit","genericComponent","propsFactory","useRender","makeVTableProps","fixedHeader","Boolean","fixedFooter","height","Number","String","hover","VTable","name","props","setup","_ref","slots","emit","themeClasses","densityClasses","_createVNode","tag","_normalizeClass","top","bottom","value","class","_normalizeStyle","style","default","_createElementVNode","wrapper"],"sources":["../../../src/components/VTable/VTable.tsx"],"sourcesContent":["// Styles\nimport './VTable.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\nexport type VTableSlots = {\n default: never\n top: never\n bottom: never\n wrapper: never\n}\n\nexport const makeVTableProps = propsFactory({\n fixedHeader: Boolean,\n fixedFooter: Boolean,\n height: [Number, String],\n hover: Boolean,\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VTable')\n\nexport const VTable = genericComponent<VTableSlots>()({\n name: 'VTable',\n\n props: makeVTableProps(),\n\n setup (props, { slots, emit }) {\n const { themeClasses } = provideTheme(props)\n const { densityClasses } = useDensity(props)\n\n useRender(() => (\n <props.tag\n class={[\n 'v-table',\n {\n 'v-table--fixed-height': !!props.height,\n 'v-table--fixed-header': props.fixedHeader,\n 'v-table--fixed-footer': props.fixedFooter,\n 'v-table--has-top': !!slots.top,\n 'v-table--has-bottom': !!slots.bottom,\n 'v-table--hover': props.hover,\n },\n themeClasses.value,\n densityClasses.value,\n props.class,\n ]}\n style={ props.style }\n >\n { slots.top?.() }\n\n { slots.default ? (\n <div\n class=\"v-table__wrapper\"\n style={{ height: convertToUnit(props.height) }}\n >\n <table>\n { slots.default() }\n </table>\n </div>\n ) : slots.wrapper?.()}\n\n { slots.bottom?.() }\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VTable = InstanceType<typeof VTable>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,YAAY;AAAA,SACZC,cAAc,EAAEC,YAAY,sCAErC;AAAA,SACSC,aAAa,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS;AASjE,OAAO,MAAMC,eAAe,GAAGF,YAAY,CAAC;EAC1CG,WAAW,EAAEC,OAAO;EACpBC,WAAW,EAAED,OAAO;EACpBE,MAAM,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAC;EACxBC,KAAK,EAAEL,OAAO;EAEd,GAAGZ,kBAAkB,CAAC,CAAC;EACvB,GAAGC,gBAAgB,CAAC,CAAC;EACrB,GAAGE,YAAY,CAAC,CAAC;EACjB,GAAGC,cAAc,CAAC;AACpB,CAAC,EAAE,QAAQ,CAAC;AAEZ,OAAO,MAAMc,MAAM,GAAGX,gBAAgB,CAAc,CAAC,CAAC;EACpDY,IAAI,EAAE,QAAQ;EAEdC,KAAK,EAAEV,eAAe,CAAC,CAAC;EAExBW,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAmB;IAAA,IAAjB;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAAF,IAAA;IAC3B,MAAM;MAAEG;IAAa,CAAC,GAAGpB,YAAY,CAACe,KAAK,CAAC;IAC5C,MAAM;MAAEM;IAAe,CAAC,GAAGxB,UAAU,CAACkB,KAAK,CAAC;IAE5CX,SAAS,CAAC,MAAAkB,YAAA,CAAAP,KAAA,CAAAQ,GAAA;MAAA,SAAAC,eAAA,CAEC,CACL,SAAS,EACT;QACE,uBAAuB,EAAE,CAAC,CAACT,KAAK,CAACN,MAAM;QACvC,uBAAuB,EAAEM,KAAK,CAACT,WAAW;QAC1C,uBAAuB,EAAES,KAAK,CAACP,WAAW;QAC1C,kBAAkB,EAAE,CAAC,CAACU,KAAK,CAACO,GAAG;QAC/B,qBAAqB,EAAE,CAAC,CAACP,KAAK,CAACQ,MAAM;QACrC,gBAAgB,EAAEX,KAAK,CAACH;MAC1B,CAAC,EACDQ,YAAY,CAACO,KAAK,EAClBN,cAAc,CAACM,KAAK,EACpBZ,KAAK,CAACa,KAAK,CACZ;MAAA,SAAAC,eAAA,CACOd,KAAK,CAACe,KAAK;IAAA;MAAAC,OAAA,EAAAA,CAAA,MAEjBb,KAAK,CAACO,GAAG,GAAG,CAAC,EAEbP,KAAK,CAACa,OAAO,GAAAC,mBAAA;QAAA;QAAA,SAGJ;UAAEvB,MAAM,EAAER,aAAa,CAACc,KAAK,CAACN,MAAM;QAAE;MAAC,IAAAuB,mBAAA,iBAG1Cd,KAAK,CAACa,OAAO,CAAC,CAAC,OAGnBb,KAAK,CAACe,OAAO,GAAG,CAAC,EAEnBf,KAAK,CAACQ,MAAM,GAAG,CAAC;IAAA,EAErB,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC","ignoreList":[]}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { createVNode as _createVNode, createElementVNode as _createElementVNode,
|
1
|
+
import { createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle } from "vue";
|
2
2
|
// Styles
|
3
3
|
import "./VToolbar.css";
|
4
4
|
|
@@ -124,9 +124,9 @@ export const VToolbar = genericComponent()({
|
|
124
124
|
}, {
|
125
125
|
default: () => [_createElementVNode("div", {
|
126
126
|
"class": "v-toolbar__content",
|
127
|
-
"style":
|
127
|
+
"style": {
|
128
128
|
height: convertToUnit(contentHeight.value)
|
129
|
-
}
|
129
|
+
}
|
130
130
|
}, [slots.prepend && _createElementVNode("div", {
|
131
131
|
"class": "v-toolbar__prepend"
|
132
132
|
}, [slots.prepend?.()]), hasTitle && _createVNode(VToolbarTitle, {
|
@@ -147,9 +147,9 @@ export const VToolbar = genericComponent()({
|
|
147
147
|
default: () => [_createVNode(VExpandTransition, null, {
|
148
148
|
default: () => [isExtended.value && _createElementVNode("div", {
|
149
149
|
"class": "v-toolbar__extension",
|
150
|
-
"style":
|
150
|
+
"style": {
|
151
151
|
height: convertToUnit(extensionHeight.value)
|
152
|
-
}
|
152
|
+
}
|
153
153
|
}, [extension])]
|
154
154
|
})]
|
155
155
|
})]
|