vuetify 3.11.0 → 3.11.2
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/dist/json/attributes.json +2912 -2904
- package/dist/json/importMap-labs.json +30 -30
- package/dist/json/importMap.json +198 -198
- package/dist/json/tags.json +2 -0
- package/dist/json/web-types.json +4995 -4976
- package/dist/vuetify-labs.cjs +41 -31
- package/dist/vuetify-labs.css +5310 -5314
- package/dist/vuetify-labs.d.ts +85 -72
- package/dist/vuetify-labs.esm.js +41 -31
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +41 -31
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +37 -27
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +4184 -4185
- package/dist/vuetify.d.ts +85 -72
- package/dist/vuetify.esm.js +37 -27
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +37 -27
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +25 -21
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.js +1 -1
- package/lib/components/VDataTable/VDataTable.js.map +1 -1
- package/lib/components/VDataTable/VDataTableHeaders.d.ts +10 -0
- package/lib/components/VDataTable/VDataTableHeaders.js +7 -7
- package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.js +8 -3
- package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
- package/lib/components/VDialog/__test__/VDialog.spec.browser.js +5 -9
- package/lib/components/VDialog/__test__/VDialog.spec.browser.js.map +1 -1
- package/lib/components/VHotkey/_variables.scss +1 -1
- package/lib/components/VNumberInput/VNumberInput.js +1 -1
- package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.js +4 -1
- package/lib/components/VSlideGroup/VSlideGroup.js.map +1 -1
- package/lib/components/VTabs/VTab.d.ts +13 -0
- package/lib/components/VTabs/VTab.js +3 -2
- package/lib/components/VTabs/VTab.js.map +1 -1
- package/lib/components/VTabs/VTabs.css +6 -7
- package/lib/components/VTabs/VTabs.js +1 -0
- package/lib/components/VTabs/VTabs.js.map +1 -1
- package/lib/components/VTabs/VTabs.sass +6 -7
- package/lib/components/VTextField/VTextField.js +8 -10
- package/lib/components/VTextField/VTextField.js.map +1 -1
- package/lib/composables/autofocus.js +3 -1
- package/lib/composables/autofocus.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +72 -72
- package/lib/framework.js +1 -1
- package/lib/labs/VMaskInput/VMaskInput.js +4 -4
- package/lib/labs/VMaskInput/VMaskInput.js.map +1 -1
- package/lib/labs/VStepperVertical/VStepperVerticalItem.css +0 -3
- package/lib/labs/VStepperVertical/VStepperVerticalItem.sass +0 -3
- package/package.json +26 -26
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDialog.spec.browser.js","names":["VDialog","render","screen","userEvent","nextTick","ref","describe","it","model","
|
|
1
|
+
{"version":3,"file":"VDialog.spec.browser.js","names":["VDialog","commands","render","screen","userEvent","nextTick","ref","describe","it","model","_createElementVNode","_createVNode","value","$event","default","_createTextVNode","expect","queryByTestId","toBeNull","findByTestId","resolves","toBeVisible","element","click","poll","toBeFalsy","onAfterLeave","vi","fn","toHaveBeenCalledTimes","first","getByCSS","last","focus","document","activeElement","toBe","tab","shift"],"sources":["../../../../src/components/VDialog/__test__/VDialog.spec.browser.tsx"],"sourcesContent":["// Components\nimport { VDialog } from '../VDialog'\n\n// Utilities\nimport { commands, render, screen, userEvent } from '@test'\nimport { nextTick, ref } from 'vue'\n\n// Tests\ndescribe('VDialog', () => {\n it('should render correctly', async () => {\n const model = ref(false)\n render(() => (\n <div>\n <VDialog v-model={ model.value } data-testid=\"dialog\">\n <div data-testid=\"content\">Content</div>\n </VDialog>\n </div>\n ))\n\n expect(screen.queryByTestId('dialog')).toBeNull()\n\n model.value = true\n await nextTick()\n await expect(screen.findByTestId('dialog')).resolves.toBeVisible()\n await expect.element(await screen.findByTestId('content')).toBeVisible()\n\n await commands.click(0, 0)\n await expect.poll(() => model.value).toBeFalsy()\n await expect.poll(() => screen.queryByTestId('dialog')).toBeNull()\n await expect.poll(() => screen.queryByTestId('content')).toBeNull()\n })\n\n it('should emit afterLeave', async () => {\n const model = ref(true)\n const onAfterLeave = vi.fn()\n render(() => (\n <div>\n <VDialog v-model={ model.value } onAfterLeave={ onAfterLeave }>\n <div data-test=\"content\">Content</div>\n </VDialog>\n </div>\n ))\n\n await commands.click(0, 0)\n await expect.poll(() => onAfterLeave).toHaveBeenCalledTimes(1)\n })\n\n it('should focus on the last element when shift + tab key is pressed on the first element', async () => {\n const model = ref(true)\n render(() => (\n <div>\n <VDialog v-model={ model.value } persistent>\n <div>\n <button data-testid=\"first\">First</button>\n <button data-testid=\"last\">Last</button>\n </div>\n </VDialog>\n </div>\n ))\n const first = screen.getByCSS('button[data-testid=\"first\"]')\n const last = screen.getByCSS('button[data-testid=\"last\"]')\n\n first.focus()\n await expect.poll(() => document.activeElement).toBe(first)\n\n await userEvent.tab({ shift: true })\n await expect.poll(() => document.activeElement).toBe(last)\n })\n\n it('should focus on the first element when Tab key is pressed on the last element', async () => {\n const model = ref(true)\n render(() => (\n <div>\n <VDialog v-model={ model.value }>\n <div>\n <button data-testid=\"first\">First</button>\n <button data-testid=\"last\">Last</button>\n </div>\n </VDialog>\n </div>\n ))\n const first = screen.getByCSS('button[data-testid=\"first\"]')\n const last = screen.getByCSS('button[data-testid=\"last\"]')\n\n last.focus()\n await expect.poll(() => document.activeElement).toBe(last)\n\n await userEvent.tab()\n await expect.poll(() => document.activeElement).toBe(first)\n })\n})\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -132,7 +132,7 @@ export const VNumberInput = genericComponent()({
|
|
|
132
132
|
});
|
|
133
133
|
const isOutOfRange = computed(() => {
|
|
134
134
|
if (_lastParsedValue.value === null) return false;
|
|
135
|
-
const numberFromText = Number(_inputText.value);
|
|
135
|
+
const numberFromText = Number(_inputText.value?.replace(decimalSeparator.value, '.'));
|
|
136
136
|
return numberFromText !== clamp(numberFromText, props.min, props.max);
|
|
137
137
|
});
|
|
138
138
|
const canIncrease = computed(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VNumberInput.js","names":["VBtn","VDefaultsProvider","VDivider","makeVTextFieldProps","VTextField","useHold","useForm","forwardRefs","useLocale","useProxiedModel","computed","nextTick","onMounted","ref","shallowRef","toRef","watch","clamp","escapeForRegex","extractNumber","genericComponent","omit","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","modelValue","Number","min","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","step","precision","minFractionDigits","decimalSeparator","validator","v","length","VNumberInput","name","props","emits","val","setup","_ref","slots","vTextFieldRef","holdStart","holdStop","toggleUpDown","form","controlsDisabled","isDisabled","value","isReadonly","isFocused","focused","decimalSeparatorFromLocale","correctPrecision","arguments","undefined","trim","fixed","toFixed","toString","replace","baseDigits","fractionDigits","split","padEnd","RegExp","filter","join","model","_inputText","_lastParsedValue","isNaN","immediate","inputText","get","set","parsedValue","isOutOfRange","numberFromText","canIncrease","canDecrease","incrementIcon","decrementIcon","controlNodeSize","controlNodeDefaultHeight","incrementSlotProps","onClick","onControlClick","onPointerup","onControlMouseup","onPointerdown","onUpControlMousedown","onPointercancel","decrementSlotProps","onDownControlMousedown","formatInputValue","clampModel","inferPrecision","str","idx","indexOf","increment","inferredPrecision","Math","onBeforeinput","e","data","inputElement","target","existingTxt","selectionStart","selectionEnd","potentialNewInputVal","slice","potentialNewNumber","test","preventDefault","cursorPosition","setSelectionRange","endsWith","onKeydown","includes","key","ctrlKey","stopPropagation","el","currentTarget","releasePointerCapture","pointerId","setPointerCapture","actualText","trimDecimalZeros","onFocus","onBlur","_","textFieldProps","filterProps","incrementControlNode","_createVNode","disabled","height","size","icon","variant","decrementControlNode","decrement","controlNode","_createElementVNode","dividerNode","appendInnerControl","reverse","_Fragment","hasAppendInner","prependInnerControl","hasPrependInner","_mergeProps","$event","class","style","_len","args","Array","_key","_len2","_key2"],"sources":["../../../src/components/VNumberInput/VNumberInput.tsx"],"sourcesContent":["// Styles\nimport './VNumberInput.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VDivider } from '@/components/VDivider'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useHold } from './hold'\nimport { useForm } from '@/composables/form'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onMounted, ref, shallowRef, toRef, watch } from 'vue'\nimport { clamp, escapeForRegex, extractNumber, genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\ntype ControlSlot = {\n props: Record<string, unknown>\n}\n\ntype VNumberInputSlots = Omit<VTextFieldSlots, 'default'> & {\n increment: ControlSlot\n decrement: ControlSlot\n}\n\ntype ControlVariant = 'default' | 'stacked' | 'split' | 'hidden'\n\nconst makeVNumberInputProps = propsFactory({\n controlVariant: {\n type: String as PropType<ControlVariant>,\n default: 'default',\n },\n inset: Boolean,\n hideInput: Boolean,\n modelValue: {\n type: Number as PropType<number | null>,\n default: null,\n },\n min: {\n type: Number,\n default: Number.MIN_SAFE_INTEGER,\n },\n max: {\n type: Number,\n default: Number.MAX_SAFE_INTEGER,\n },\n step: {\n type: Number,\n default: 1,\n },\n precision: {\n type: Number as PropType<number | null>,\n default: 0,\n },\n minFractionDigits: {\n type: Number as PropType<number | null>,\n default: null,\n },\n decimalSeparator: {\n type: String,\n validator: (v: any) => !v || v.length === 1,\n },\n\n ...omit(makeVTextFieldProps(), ['modelValue', 'validationValue']),\n}, 'VNumberInput')\n\nexport const VNumberInput = genericComponent<VNumberInputSlots>()({\n name: 'VNumberInput',\n\n props: {\n ...makeVNumberInputProps(),\n },\n\n emits: {\n 'update:focused': (val: boolean) => true,\n 'update:modelValue': (val: number) => true,\n },\n\n setup (props, { slots }) {\n const vTextFieldRef = ref<VTextField>()\n\n const { holdStart, holdStop } = useHold({ toggleUpDown })\n const form = useForm(props)\n const controlsDisabled = computed(() => (\n form.isDisabled.value || form.isReadonly.value\n ))\n\n const isFocused = shallowRef(props.focused)\n\n const { decimalSeparator: decimalSeparatorFromLocale } = useLocale()\n const decimalSeparator = computed(() => props.decimalSeparator?.[0] || decimalSeparatorFromLocale.value)\n\n function correctPrecision (val: number, precision = props.precision, trim = true) {\n const fixed = precision == null\n ? String(val)\n : val.toFixed(precision)\n\n if (isFocused.value && trim) {\n return Number(fixed).toString() // trim zeros\n .replace('.', decimalSeparator.value)\n }\n\n if (props.minFractionDigits === null || (precision !== null && precision < props.minFractionDigits)) {\n return fixed.replace('.', decimalSeparator.value)\n }\n\n let [baseDigits, fractionDigits] = fixed.split('.')\n\n fractionDigits = (fractionDigits ?? '').padEnd(props.minFractionDigits, '0')\n .replace(new RegExp(`(?<=\\\\d{${props.minFractionDigits}})0+$`, 'g'), '')\n\n return [\n baseDigits,\n fractionDigits,\n ].filter(Boolean).join(decimalSeparator.value)\n }\n\n const model = useProxiedModel(props, 'modelValue', null,\n val => val ?? null,\n val => val == null\n ? val ?? null\n : clamp(Number(val), props.min, props.max)\n )\n\n const _inputText = shallowRef<string | null>(null)\n const _lastParsedValue = shallowRef<number | null>(null)\n\n watch(model, val => {\n if (\n isFocused.value &&\n !controlsDisabled.value &&\n Number(_inputText.value?.replace(decimalSeparator.value, '.')) === val\n ) {\n // ignore external changes while typing\n // e.g. 5.01{backspace}2 » should result in 5.02\n // but we emit '5' in and want to preserve '5.0'\n } else if (val == null) {\n _inputText.value = null\n _lastParsedValue.value = null\n } else if (!isNaN(val)) {\n _inputText.value = correctPrecision(val)\n _lastParsedValue.value = Number(_inputText.value.replace(decimalSeparator.value, '.'))\n }\n }, { immediate: true })\n\n const inputText = computed<string | null>({\n get: () => _inputText.value,\n set (val) {\n if (val === null || val === '') {\n model.value = null\n _inputText.value = null\n _lastParsedValue.value = null\n return\n }\n const parsedValue = Number(val.replace(decimalSeparator.value, '.'))\n if (!isNaN(parsedValue)) {\n _inputText.value = val\n _lastParsedValue.value = parsedValue\n\n if (parsedValue <= props.max && parsedValue >= props.min) {\n model.value = parsedValue\n }\n }\n },\n })\n\n const isOutOfRange = computed(() => {\n if (_lastParsedValue.value === null) return false\n const numberFromText = Number(_inputText.value)\n return numberFromText !== clamp(numberFromText, props.min, props.max)\n })\n\n const canIncrease = computed(() => {\n if (controlsDisabled.value) return false\n return (model.value ?? 0) as number + props.step <= props.max\n })\n const canDecrease = computed(() => {\n if (controlsDisabled.value) return false\n return (model.value ?? 0) as number - props.step >= props.min\n })\n\n const controlVariant = computed(() => {\n return props.hideInput ? 'stacked' : props.controlVariant\n })\n\n const incrementIcon = toRef(() => controlVariant.value === 'split' ? '$plus' : '$collapse')\n const decrementIcon = toRef(() => controlVariant.value === 'split' ? '$minus' : '$expand')\n const controlNodeSize = toRef(() => controlVariant.value === 'split' ? 'default' : 'small')\n const controlNodeDefaultHeight = toRef(() => controlVariant.value === 'stacked' ? 'auto' : '100%')\n\n const incrementSlotProps = {\n props: {\n onClick: onControlClick,\n onPointerup: onControlMouseup,\n onPointerdown: onUpControlMousedown,\n onPointercancel: onControlMouseup,\n },\n }\n const decrementSlotProps = {\n props: {\n onClick: onControlClick,\n onPointerup: onControlMouseup,\n onPointerdown: onDownControlMousedown,\n onPointercancel: onControlMouseup,\n },\n }\n\n watch(() => props.precision, () => formatInputValue())\n watch(() => props.minFractionDigits, () => formatInputValue())\n\n onMounted(() => {\n clampModel()\n })\n\n function inferPrecision (value: number | null) {\n if (value == null) return 0\n const str = value.toString()\n const idx = str.indexOf('.')\n return ~idx ? str.length - idx : 0\n }\n\n function toggleUpDown (increment = true) {\n if (controlsDisabled.value) return\n if (model.value == null) {\n inputText.value = correctPrecision(clamp(0, props.min, props.max))\n return\n }\n\n let inferredPrecision = Math.max(inferPrecision(model.value), inferPrecision(props.step))\n if (props.precision != null) inferredPrecision = Math.max(inferredPrecision, props.precision)\n if (increment) {\n if (canIncrease.value) inputText.value = correctPrecision(model.value + props.step, inferredPrecision)\n } else {\n if (canDecrease.value) inputText.value = correctPrecision(model.value - props.step, inferredPrecision)\n }\n }\n\n function onBeforeinput (e: InputEvent) {\n if (!e.data) return\n const inputElement = e.target as HTMLInputElement\n const { value: existingTxt, selectionStart, selectionEnd } = inputElement ?? {}\n\n const potentialNewInputVal =\n existingTxt\n ? existingTxt.slice(0, selectionStart as number | undefined) + e.data + existingTxt.slice(selectionEnd as number | undefined)\n : e.data\n\n const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision, decimalSeparator.value)\n\n // Allow only numbers, \"-\" and {decimal separator}\n // Allow \"-\" and {decimal separator} only once\n // Allow \"-\" only at the start\n if (!new RegExp(`^-?\\\\d*${escapeForRegex(decimalSeparator.value)}?\\\\d*$`).test(potentialNewInputVal)) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n nextTick(() => inputText.value = potentialNewNumber)\n }\n\n if (props.precision == null) return\n\n // Ignore decimal digits above precision limit\n if (potentialNewInputVal.split(decimalSeparator.value)[1]?.length > props.precision) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n nextTick(() => inputText.value = potentialNewNumber)\n\n const cursorPosition = (selectionStart ?? 0) + e.data.length\n inputElement!.setSelectionRange(cursorPosition, cursorPosition)\n }\n // Ignore decimal separator when precision = 0\n if (props.precision === 0 && potentialNewInputVal.endsWith(decimalSeparator.value)) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n nextTick(() => inputText.value = potentialNewNumber)\n }\n }\n\n async function onKeydown (e: KeyboardEvent) {\n if (\n ['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) ||\n e.ctrlKey\n ) return\n\n if (['ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault()\n e.stopPropagation()\n clampModel()\n // _model is controlled, so need to wait until props['modelValue'] is updated\n await nextTick()\n if (e.key === 'ArrowDown') {\n toggleUpDown(false)\n } else {\n toggleUpDown()\n }\n }\n }\n\n function onControlClick (e: MouseEvent) {\n e.stopPropagation()\n }\n\n function onControlMouseup (e: PointerEvent) {\n const el = e.currentTarget as HTMLElement\n el?.releasePointerCapture(e.pointerId)\n e.preventDefault()\n holdStop()\n }\n\n function onUpControlMousedown (e: PointerEvent) {\n const el = e.currentTarget as HTMLElement\n el?.setPointerCapture(e.pointerId)\n e.preventDefault()\n e.stopPropagation()\n holdStart('up')\n }\n\n function onDownControlMousedown (e: PointerEvent) {\n const el = e.currentTarget as HTMLElement\n el?.setPointerCapture(e.pointerId)\n e.preventDefault()\n e.stopPropagation()\n holdStart('down')\n }\n\n function clampModel () {\n if (controlsDisabled.value) return\n if (!vTextFieldRef.value) return\n const actualText = vTextFieldRef.value.value\n const parsedValue = Number(actualText.replace(decimalSeparator.value, '.'))\n if (actualText && !isNaN(parsedValue)) {\n inputText.value = correctPrecision(clamp(parsedValue, props.min, props.max))\n } else {\n inputText.value = null\n }\n }\n\n function formatInputValue () {\n if (controlsDisabled.value) return\n inputText.value = model.value !== null && !isNaN(model.value)\n ? correctPrecision(model.value, props.precision, false)\n : null\n }\n\n function trimDecimalZeros () {\n if (controlsDisabled.value) return\n if (model.value === null || isNaN(model.value)) {\n inputText.value = null\n return\n }\n inputText.value = model.value.toString()\n .replace('.', decimalSeparator.value)\n }\n\n function onFocus () {\n trimDecimalZeros()\n }\n\n function onBlur () {\n clampModel()\n }\n\n useRender(() => {\n const { modelValue: _, type, ...textFieldProps } = VTextField.filterProps(props)\n\n function incrementControlNode () {\n return !slots.increment ? (\n <VBtn\n aria-hidden=\"true\"\n data-testid=\"increment\"\n disabled={ !canIncrease.value }\n height={ controlNodeDefaultHeight.value }\n icon={ incrementIcon.value }\n key=\"increment-btn\"\n onClick={ onControlClick }\n onPointerdown={ onUpControlMousedown }\n onPointerup={ onControlMouseup }\n onPointercancel={ onControlMouseup }\n size={ controlNodeSize.value }\n variant=\"text\"\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"increment-defaults\"\n defaults={{\n VBtn: {\n disabled: !canIncrease.value,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: incrementIcon.value,\n variant: 'text',\n },\n }}\n >\n { slots.increment(incrementSlotProps) }\n </VDefaultsProvider>\n )\n }\n\n function decrementControlNode () {\n return !slots.decrement ? (\n <VBtn\n aria-hidden=\"true\"\n data-testid=\"decrement\"\n disabled={ !canDecrease.value }\n height={ controlNodeDefaultHeight.value }\n icon={ decrementIcon.value }\n key=\"decrement-btn\"\n onClick={ onControlClick }\n onPointerdown={ onDownControlMousedown }\n onPointerup={ onControlMouseup }\n onPointercancel={ onControlMouseup }\n size={ controlNodeSize.value }\n variant=\"text\"\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"decrement-defaults\"\n defaults={{\n VBtn: {\n disabled: !canDecrease.value,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: decrementIcon.value,\n variant: 'text',\n },\n }}\n >\n { slots.decrement(decrementSlotProps) }\n </VDefaultsProvider>\n )\n }\n\n function controlNode () {\n return (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider\n vertical={ controlVariant.value !== 'stacked' }\n />\n\n { incrementControlNode() }\n </div>\n )\n }\n\n function dividerNode () {\n return !props.hideInput && !props.inset ? <VDivider vertical /> : undefined\n }\n\n const appendInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n <VDivider vertical />\n\n { incrementControlNode() }\n </div>\n ) : (props.reverse || controlVariant.value === 'hidden'\n ? undefined\n : <>{ dividerNode() }{ controlNode() }</>)\n\n const hasAppendInner = slots['append-inner'] || appendInnerControl\n\n const prependInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider vertical />\n </div>\n ) : (props.reverse && controlVariant.value !== 'hidden'\n ? <>{ controlNode() }{ dividerNode() }</>\n : undefined)\n\n const hasPrependInner = slots['prepend-inner'] || prependInnerControl\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n v-model={ inputText.value }\n v-model:focused={ isFocused.value }\n validationValue={ model.value }\n error={ isOutOfRange.value || undefined }\n onBeforeinput={ onBeforeinput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n class={[\n 'v-number-input',\n {\n 'v-number-input--default': controlVariant.value === 'default',\n 'v-number-input--hide-input': props.hideInput,\n 'v-number-input--inset': props.inset,\n 'v-number-input--reverse': props.reverse,\n 'v-number-input--split': controlVariant.value === 'split',\n 'v-number-input--stacked': controlVariant.value === 'stacked',\n },\n props.class,\n ]}\n style={ props.style }\n inputmode=\"decimal\"\n >\n {{\n ...slots,\n 'append-inner': hasAppendInner ? (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { appendInnerControl }\n </>\n ) : undefined,\n 'prepend-inner': hasPrependInner ? (...args) => (\n <>\n { prependInnerControl }\n { slots['prepend-inner']?.(...args) }\n </>\n ) : undefined,\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vTextFieldRef)\n },\n})\n\nexport type VNumberInput = InstanceType<typeof VNumberInput>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VNumberInput.js","names":["VBtn","VDefaultsProvider","VDivider","makeVTextFieldProps","VTextField","useHold","useForm","forwardRefs","useLocale","useProxiedModel","computed","nextTick","onMounted","ref","shallowRef","toRef","watch","clamp","escapeForRegex","extractNumber","genericComponent","omit","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","modelValue","Number","min","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","step","precision","minFractionDigits","decimalSeparator","validator","v","length","VNumberInput","name","props","emits","val","setup","_ref","slots","vTextFieldRef","holdStart","holdStop","toggleUpDown","form","controlsDisabled","isDisabled","value","isReadonly","isFocused","focused","decimalSeparatorFromLocale","correctPrecision","arguments","undefined","trim","fixed","toFixed","toString","replace","baseDigits","fractionDigits","split","padEnd","RegExp","filter","join","model","_inputText","_lastParsedValue","isNaN","immediate","inputText","get","set","parsedValue","isOutOfRange","numberFromText","canIncrease","canDecrease","incrementIcon","decrementIcon","controlNodeSize","controlNodeDefaultHeight","incrementSlotProps","onClick","onControlClick","onPointerup","onControlMouseup","onPointerdown","onUpControlMousedown","onPointercancel","decrementSlotProps","onDownControlMousedown","formatInputValue","clampModel","inferPrecision","str","idx","indexOf","increment","inferredPrecision","Math","onBeforeinput","e","data","inputElement","target","existingTxt","selectionStart","selectionEnd","potentialNewInputVal","slice","potentialNewNumber","test","preventDefault","cursorPosition","setSelectionRange","endsWith","onKeydown","includes","key","ctrlKey","stopPropagation","el","currentTarget","releasePointerCapture","pointerId","setPointerCapture","actualText","trimDecimalZeros","onFocus","onBlur","_","textFieldProps","filterProps","incrementControlNode","_createVNode","disabled","height","size","icon","variant","decrementControlNode","decrement","controlNode","_createElementVNode","dividerNode","appendInnerControl","reverse","_Fragment","hasAppendInner","prependInnerControl","hasPrependInner","_mergeProps","$event","class","style","_len","args","Array","_key","_len2","_key2"],"sources":["../../../src/components/VNumberInput/VNumberInput.tsx"],"sourcesContent":["// Styles\nimport './VNumberInput.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VDivider } from '@/components/VDivider'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useHold } from './hold'\nimport { useForm } from '@/composables/form'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onMounted, ref, shallowRef, toRef, watch } from 'vue'\nimport { clamp, escapeForRegex, extractNumber, genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\ntype ControlSlot = {\n props: Record<string, unknown>\n}\n\ntype VNumberInputSlots = Omit<VTextFieldSlots, 'default'> & {\n increment: ControlSlot\n decrement: ControlSlot\n}\n\ntype ControlVariant = 'default' | 'stacked' | 'split' | 'hidden'\n\nconst makeVNumberInputProps = propsFactory({\n controlVariant: {\n type: String as PropType<ControlVariant>,\n default: 'default',\n },\n inset: Boolean,\n hideInput: Boolean,\n modelValue: {\n type: Number as PropType<number | null>,\n default: null,\n },\n min: {\n type: Number,\n default: Number.MIN_SAFE_INTEGER,\n },\n max: {\n type: Number,\n default: Number.MAX_SAFE_INTEGER,\n },\n step: {\n type: Number,\n default: 1,\n },\n precision: {\n type: Number as PropType<number | null>,\n default: 0,\n },\n minFractionDigits: {\n type: Number as PropType<number | null>,\n default: null,\n },\n decimalSeparator: {\n type: String,\n validator: (v: any) => !v || v.length === 1,\n },\n\n ...omit(makeVTextFieldProps(), ['modelValue', 'validationValue']),\n}, 'VNumberInput')\n\nexport const VNumberInput = genericComponent<VNumberInputSlots>()({\n name: 'VNumberInput',\n\n props: {\n ...makeVNumberInputProps(),\n },\n\n emits: {\n 'update:focused': (val: boolean) => true,\n 'update:modelValue': (val: number) => true,\n },\n\n setup (props, { slots }) {\n const vTextFieldRef = ref<VTextField>()\n\n const { holdStart, holdStop } = useHold({ toggleUpDown })\n const form = useForm(props)\n const controlsDisabled = computed(() => (\n form.isDisabled.value || form.isReadonly.value\n ))\n\n const isFocused = shallowRef(props.focused)\n\n const { decimalSeparator: decimalSeparatorFromLocale } = useLocale()\n const decimalSeparator = computed(() => props.decimalSeparator?.[0] || decimalSeparatorFromLocale.value)\n\n function correctPrecision (val: number, precision = props.precision, trim = true) {\n const fixed = precision == null\n ? String(val)\n : val.toFixed(precision)\n\n if (isFocused.value && trim) {\n return Number(fixed).toString() // trim zeros\n .replace('.', decimalSeparator.value)\n }\n\n if (props.minFractionDigits === null || (precision !== null && precision < props.minFractionDigits)) {\n return fixed.replace('.', decimalSeparator.value)\n }\n\n let [baseDigits, fractionDigits] = fixed.split('.')\n\n fractionDigits = (fractionDigits ?? '').padEnd(props.minFractionDigits, '0')\n .replace(new RegExp(`(?<=\\\\d{${props.minFractionDigits}})0+$`, 'g'), '')\n\n return [\n baseDigits,\n fractionDigits,\n ].filter(Boolean).join(decimalSeparator.value)\n }\n\n const model = useProxiedModel(props, 'modelValue', null,\n val => val ?? null,\n val => val == null\n ? val ?? null\n : clamp(Number(val), props.min, props.max)\n )\n\n const _inputText = shallowRef<string | null>(null)\n const _lastParsedValue = shallowRef<number | null>(null)\n\n watch(model, val => {\n if (\n isFocused.value &&\n !controlsDisabled.value &&\n Number(_inputText.value?.replace(decimalSeparator.value, '.')) === val\n ) {\n // ignore external changes while typing\n // e.g. 5.01{backspace}2 » should result in 5.02\n // but we emit '5' in and want to preserve '5.0'\n } else if (val == null) {\n _inputText.value = null\n _lastParsedValue.value = null\n } else if (!isNaN(val)) {\n _inputText.value = correctPrecision(val)\n _lastParsedValue.value = Number(_inputText.value.replace(decimalSeparator.value, '.'))\n }\n }, { immediate: true })\n\n const inputText = computed<string | null>({\n get: () => _inputText.value,\n set (val) {\n if (val === null || val === '') {\n model.value = null\n _inputText.value = null\n _lastParsedValue.value = null\n return\n }\n const parsedValue = Number(val.replace(decimalSeparator.value, '.'))\n if (!isNaN(parsedValue)) {\n _inputText.value = val\n _lastParsedValue.value = parsedValue\n\n if (parsedValue <= props.max && parsedValue >= props.min) {\n model.value = parsedValue\n }\n }\n },\n })\n\n const isOutOfRange = computed(() => {\n if (_lastParsedValue.value === null) return false\n const numberFromText = Number(_inputText.value?.replace(decimalSeparator.value, '.'))\n return numberFromText !== clamp(numberFromText, props.min, props.max)\n })\n\n const canIncrease = computed(() => {\n if (controlsDisabled.value) return false\n return (model.value ?? 0) as number + props.step <= props.max\n })\n const canDecrease = computed(() => {\n if (controlsDisabled.value) return false\n return (model.value ?? 0) as number - props.step >= props.min\n })\n\n const controlVariant = computed(() => {\n return props.hideInput ? 'stacked' : props.controlVariant\n })\n\n const incrementIcon = toRef(() => controlVariant.value === 'split' ? '$plus' : '$collapse')\n const decrementIcon = toRef(() => controlVariant.value === 'split' ? '$minus' : '$expand')\n const controlNodeSize = toRef(() => controlVariant.value === 'split' ? 'default' : 'small')\n const controlNodeDefaultHeight = toRef(() => controlVariant.value === 'stacked' ? 'auto' : '100%')\n\n const incrementSlotProps = {\n props: {\n onClick: onControlClick,\n onPointerup: onControlMouseup,\n onPointerdown: onUpControlMousedown,\n onPointercancel: onControlMouseup,\n },\n }\n const decrementSlotProps = {\n props: {\n onClick: onControlClick,\n onPointerup: onControlMouseup,\n onPointerdown: onDownControlMousedown,\n onPointercancel: onControlMouseup,\n },\n }\n\n watch(() => props.precision, () => formatInputValue())\n watch(() => props.minFractionDigits, () => formatInputValue())\n\n onMounted(() => {\n clampModel()\n })\n\n function inferPrecision (value: number | null) {\n if (value == null) return 0\n const str = value.toString()\n const idx = str.indexOf('.')\n return ~idx ? str.length - idx : 0\n }\n\n function toggleUpDown (increment = true) {\n if (controlsDisabled.value) return\n if (model.value == null) {\n inputText.value = correctPrecision(clamp(0, props.min, props.max))\n return\n }\n\n let inferredPrecision = Math.max(inferPrecision(model.value), inferPrecision(props.step))\n if (props.precision != null) inferredPrecision = Math.max(inferredPrecision, props.precision)\n if (increment) {\n if (canIncrease.value) inputText.value = correctPrecision(model.value + props.step, inferredPrecision)\n } else {\n if (canDecrease.value) inputText.value = correctPrecision(model.value - props.step, inferredPrecision)\n }\n }\n\n function onBeforeinput (e: InputEvent) {\n if (!e.data) return\n const inputElement = e.target as HTMLInputElement\n const { value: existingTxt, selectionStart, selectionEnd } = inputElement ?? {}\n\n const potentialNewInputVal =\n existingTxt\n ? existingTxt.slice(0, selectionStart as number | undefined) + e.data + existingTxt.slice(selectionEnd as number | undefined)\n : e.data\n\n const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision, decimalSeparator.value)\n\n // Allow only numbers, \"-\" and {decimal separator}\n // Allow \"-\" and {decimal separator} only once\n // Allow \"-\" only at the start\n if (!new RegExp(`^-?\\\\d*${escapeForRegex(decimalSeparator.value)}?\\\\d*$`).test(potentialNewInputVal)) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n nextTick(() => inputText.value = potentialNewNumber)\n }\n\n if (props.precision == null) return\n\n // Ignore decimal digits above precision limit\n if (potentialNewInputVal.split(decimalSeparator.value)[1]?.length > props.precision) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n nextTick(() => inputText.value = potentialNewNumber)\n\n const cursorPosition = (selectionStart ?? 0) + e.data.length\n inputElement!.setSelectionRange(cursorPosition, cursorPosition)\n }\n // Ignore decimal separator when precision = 0\n if (props.precision === 0 && potentialNewInputVal.endsWith(decimalSeparator.value)) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n nextTick(() => inputText.value = potentialNewNumber)\n }\n }\n\n async function onKeydown (e: KeyboardEvent) {\n if (\n ['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) ||\n e.ctrlKey\n ) return\n\n if (['ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault()\n e.stopPropagation()\n clampModel()\n // _model is controlled, so need to wait until props['modelValue'] is updated\n await nextTick()\n if (e.key === 'ArrowDown') {\n toggleUpDown(false)\n } else {\n toggleUpDown()\n }\n }\n }\n\n function onControlClick (e: MouseEvent) {\n e.stopPropagation()\n }\n\n function onControlMouseup (e: PointerEvent) {\n const el = e.currentTarget as HTMLElement\n el?.releasePointerCapture(e.pointerId)\n e.preventDefault()\n holdStop()\n }\n\n function onUpControlMousedown (e: PointerEvent) {\n const el = e.currentTarget as HTMLElement\n el?.setPointerCapture(e.pointerId)\n e.preventDefault()\n e.stopPropagation()\n holdStart('up')\n }\n\n function onDownControlMousedown (e: PointerEvent) {\n const el = e.currentTarget as HTMLElement\n el?.setPointerCapture(e.pointerId)\n e.preventDefault()\n e.stopPropagation()\n holdStart('down')\n }\n\n function clampModel () {\n if (controlsDisabled.value) return\n if (!vTextFieldRef.value) return\n const actualText = vTextFieldRef.value.value\n const parsedValue = Number(actualText.replace(decimalSeparator.value, '.'))\n if (actualText && !isNaN(parsedValue)) {\n inputText.value = correctPrecision(clamp(parsedValue, props.min, props.max))\n } else {\n inputText.value = null\n }\n }\n\n function formatInputValue () {\n if (controlsDisabled.value) return\n inputText.value = model.value !== null && !isNaN(model.value)\n ? correctPrecision(model.value, props.precision, false)\n : null\n }\n\n function trimDecimalZeros () {\n if (controlsDisabled.value) return\n if (model.value === null || isNaN(model.value)) {\n inputText.value = null\n return\n }\n inputText.value = model.value.toString()\n .replace('.', decimalSeparator.value)\n }\n\n function onFocus () {\n trimDecimalZeros()\n }\n\n function onBlur () {\n clampModel()\n }\n\n useRender(() => {\n const { modelValue: _, type, ...textFieldProps } = VTextField.filterProps(props)\n\n function incrementControlNode () {\n return !slots.increment ? (\n <VBtn\n aria-hidden=\"true\"\n data-testid=\"increment\"\n disabled={ !canIncrease.value }\n height={ controlNodeDefaultHeight.value }\n icon={ incrementIcon.value }\n key=\"increment-btn\"\n onClick={ onControlClick }\n onPointerdown={ onUpControlMousedown }\n onPointerup={ onControlMouseup }\n onPointercancel={ onControlMouseup }\n size={ controlNodeSize.value }\n variant=\"text\"\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"increment-defaults\"\n defaults={{\n VBtn: {\n disabled: !canIncrease.value,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: incrementIcon.value,\n variant: 'text',\n },\n }}\n >\n { slots.increment(incrementSlotProps) }\n </VDefaultsProvider>\n )\n }\n\n function decrementControlNode () {\n return !slots.decrement ? (\n <VBtn\n aria-hidden=\"true\"\n data-testid=\"decrement\"\n disabled={ !canDecrease.value }\n height={ controlNodeDefaultHeight.value }\n icon={ decrementIcon.value }\n key=\"decrement-btn\"\n onClick={ onControlClick }\n onPointerdown={ onDownControlMousedown }\n onPointerup={ onControlMouseup }\n onPointercancel={ onControlMouseup }\n size={ controlNodeSize.value }\n variant=\"text\"\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"decrement-defaults\"\n defaults={{\n VBtn: {\n disabled: !canDecrease.value,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: decrementIcon.value,\n variant: 'text',\n },\n }}\n >\n { slots.decrement(decrementSlotProps) }\n </VDefaultsProvider>\n )\n }\n\n function controlNode () {\n return (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider\n vertical={ controlVariant.value !== 'stacked' }\n />\n\n { incrementControlNode() }\n </div>\n )\n }\n\n function dividerNode () {\n return !props.hideInput && !props.inset ? <VDivider vertical /> : undefined\n }\n\n const appendInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n <VDivider vertical />\n\n { incrementControlNode() }\n </div>\n ) : (props.reverse || controlVariant.value === 'hidden'\n ? undefined\n : <>{ dividerNode() }{ controlNode() }</>)\n\n const hasAppendInner = slots['append-inner'] || appendInnerControl\n\n const prependInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider vertical />\n </div>\n ) : (props.reverse && controlVariant.value !== 'hidden'\n ? <>{ controlNode() }{ dividerNode() }</>\n : undefined)\n\n const hasPrependInner = slots['prepend-inner'] || prependInnerControl\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n v-model={ inputText.value }\n v-model:focused={ isFocused.value }\n validationValue={ model.value }\n error={ isOutOfRange.value || undefined }\n onBeforeinput={ onBeforeinput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n class={[\n 'v-number-input',\n {\n 'v-number-input--default': controlVariant.value === 'default',\n 'v-number-input--hide-input': props.hideInput,\n 'v-number-input--inset': props.inset,\n 'v-number-input--reverse': props.reverse,\n 'v-number-input--split': controlVariant.value === 'split',\n 'v-number-input--stacked': controlVariant.value === 'stacked',\n },\n props.class,\n ]}\n style={ props.style }\n inputmode=\"decimal\"\n >\n {{\n ...slots,\n 'append-inner': hasAppendInner ? (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { appendInnerControl }\n </>\n ) : undefined,\n 'prepend-inner': hasPrependInner ? (...args) => (\n <>\n { prependInnerControl }\n { slots['prepend-inner']?.(...args) }\n </>\n ) : undefined,\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vTextFieldRef)\n },\n})\n\nexport type VNumberInput = InstanceType<typeof VNumberInput>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -42,7 +42,7 @@ export const makeVSlideGroupProps = propsFactory({
|
|
|
42
42
|
},
|
|
43
43
|
showArrows: {
|
|
44
44
|
type: [Boolean, String],
|
|
45
|
-
validator: v => typeof v === 'boolean' || ['always', 'desktop', 'mobile'].includes(v)
|
|
45
|
+
validator: v => typeof v === 'boolean' || ['always', 'desktop', 'mobile', 'never'].includes(v)
|
|
46
46
|
},
|
|
47
47
|
...makeComponentProps(),
|
|
48
48
|
...makeDisplayProps({
|
|
@@ -276,6 +276,9 @@ export const VSlideGroup = genericComponent()({
|
|
|
276
276
|
const hasOverflowOrScroll = computed(() => isOverflowing.value || Math.abs(scrollOffset.value) > 0);
|
|
277
277
|
const hasAffixes = computed(() => {
|
|
278
278
|
switch (props.showArrows) {
|
|
279
|
+
case 'never':
|
|
280
|
+
return false;
|
|
281
|
+
|
|
279
282
|
// Always show arrows on desktop & mobile
|
|
280
283
|
case 'always':
|
|
281
284
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VSlideGroup.js","names":["VFadeTransition","VIcon","makeComponentProps","makeDisplayProps","useDisplay","useGoTo","makeGroupProps","useGroup","IconValue","useRtl","useResizeObserver","makeTagProps","computed","shallowRef","watch","calculateCenteredTarget","calculateUpdatedTarget","getClientSize","getOffsetSize","getScrollPosition","getScrollSize","focusableChildren","genericComponent","IN_BROWSER","propsFactory","useRender","VSlideGroupSymbol","Symbol","for","makeVSlideGroupProps","centerActive","Boolean","scrollToActive","type","default","contentClass","direction","String","symbol","nextIcon","prevIcon","showArrows","validator","v","includes","mobile","selectedClass","VSlideGroup","name","props","emits","value","setup","_ref","slots","isRtl","displayClasses","group","isOverflowing","scrollOffset","containerSize","contentSize","isHorizontal","resizeRef","containerRef","contentRect","containerRect","contentRef","goTo","goToOptions","container","el","duration","easing","firstSelectedIndex","selected","length","items","findIndex","item","id","lastSelectedIndex","frame","cancelAnimationFrame","requestAnimationFrame","sizeProperty","selectedElement","children","scrollToChildren","isFocused","center","target","containerElement","scrollToPosition","newPosition","offsetSize","scrollPosition","scrollSize","Math","abs","scrollWidth","offsetWidth","containerWidth","horizontal","onScroll","e","scrollTop","scrollLeft","onFocusin","composedPath","onFocusout","ignoreFocusEvent","onFocus","relatedTarget","contains","focus","onFocusAffixes","onKeydown","toFocus","location","preventDefault","key","getSiblingElement","undefined","sibling","hasAttribute","focusable","querySelector","firstElementChild","lastElementChild","preventScroll","scrollTo","offsetStep","slotProps","next","prev","select","isSelected","hasOverflowOrScroll","hasAffixes","hasPrev","hasNext","clientSize","scrollSizeMax","_createVNode","tag","_normalizeClass","class","_normalizeStyle","style","_createElementVNode","onClick"],"sources":["../../../src/components/VSlideGroup/VSlideGroup.tsx"],"sourcesContent":["// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport { VFadeTransition } from '@/components/transitions'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { useGoTo } from '@/composables/goto'\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { IconValue } from '@/composables/icons'\nimport { useRtl } from '@/composables/locale'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, shallowRef, watch } from 'vue'\nimport {\n calculateCenteredTarget,\n calculateUpdatedTarget,\n getClientSize,\n getOffsetSize,\n getScrollPosition,\n getScrollSize,\n} from './helpers'\nimport { focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { GoToOptions } from '@/composables/goto'\nimport type { GroupProvide } from '@/composables/group'\nimport type { GenericProps } from '@/util'\n\nexport const VSlideGroupSymbol: InjectionKey<GroupProvide> = Symbol.for('vuetify:v-slide-group')\n\ninterface SlideGroupSlot {\n next: GroupProvide['next']\n prev: GroupProvide['prev']\n select: GroupProvide['select']\n isSelected: GroupProvide['isSelected']\n}\n\nexport type VSlideGroupSlots = {\n default: SlideGroupSlot\n prev: SlideGroupSlot\n next: SlideGroupSlot\n}\n\nexport const makeVSlideGroupProps = propsFactory({\n centerActive: Boolean,\n scrollToActive: {\n type: Boolean,\n default: true,\n },\n contentClass: null,\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n symbol: {\n type: null,\n default: VSlideGroupSymbol,\n },\n nextIcon: {\n type: IconValue,\n default: '$next',\n },\n prevIcon: {\n type: IconValue,\n default: '$prev',\n },\n showArrows: {\n type: [Boolean, String],\n validator: (v: any) => (\n typeof v === 'boolean' || [\n 'always',\n 'desktop',\n 'mobile',\n ].includes(v)\n ),\n },\n\n ...makeComponentProps(),\n ...makeDisplayProps({ mobile: null }),\n ...makeTagProps(),\n ...makeGroupProps({\n selectedClass: 'v-slide-group-item--active',\n }),\n}, 'VSlideGroup')\n\nexport const VSlideGroup = genericComponent<new <T>(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VSlideGroupSlots,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VSlideGroup',\n\n props: makeVSlideGroupProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const { isRtl } = useRtl()\n const { displayClasses, mobile } = useDisplay(props)\n const group = useGroup(props, props.symbol)\n const isOverflowing = shallowRef(false)\n const scrollOffset = shallowRef(0)\n const containerSize = shallowRef(0)\n const contentSize = shallowRef(0)\n const isHorizontal = computed(() => props.direction === 'horizontal')\n\n const { resizeRef: containerRef, contentRect: containerRect } = useResizeObserver()\n const { resizeRef: contentRef, contentRect } = useResizeObserver()\n\n const goTo = useGoTo()\n const goToOptions = computed<Partial<GoToOptions>>(() => {\n return {\n container: containerRef.el,\n duration: 200,\n easing: 'easeOutQuart',\n }\n })\n\n const firstSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1\n\n return group.items.value.findIndex(item => item.id === group.selected.value[0])\n })\n\n const lastSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1\n\n return group.items.value.findIndex(item => item.id === group.selected.value[group.selected.value.length - 1])\n })\n\n if (IN_BROWSER) {\n let frame = -1\n watch(() => [group.selected.value, containerRect.value, contentRect.value, isHorizontal.value], () => {\n cancelAnimationFrame(frame)\n frame = requestAnimationFrame(() => {\n if (containerRect.value && contentRect.value) {\n const sizeProperty = isHorizontal.value ? 'width' : 'height'\n\n containerSize.value = containerRect.value[sizeProperty]\n contentSize.value = contentRect.value[sizeProperty]\n\n isOverflowing.value = containerSize.value + 1 < contentSize.value\n }\n\n if (props.scrollToActive && firstSelectedIndex.value >= 0 && contentRef.el) {\n // TODO: Is this too naive? Should we store element references in group composable?\n const selectedElement = contentRef.el.children[lastSelectedIndex.value] as HTMLElement\n\n scrollToChildren(selectedElement, props.centerActive)\n }\n })\n })\n }\n\n const isFocused = shallowRef(false)\n\n function scrollToChildren (children: HTMLElement, center?: boolean) {\n let target = 0\n\n if (center) {\n target = calculateCenteredTarget({\n containerElement: containerRef.el!,\n isHorizontal: isHorizontal.value,\n selectedElement: children,\n })\n } else {\n target = calculateUpdatedTarget({\n containerElement: containerRef.el!,\n isHorizontal: isHorizontal.value,\n isRtl: isRtl.value,\n selectedElement: children,\n })\n }\n\n scrollToPosition(target)\n }\n\n function scrollToPosition (newPosition: number) {\n if (!IN_BROWSER || !containerRef.el) return\n\n const offsetSize = getOffsetSize(isHorizontal.value, containerRef.el)\n const scrollPosition = getScrollPosition(isHorizontal.value, isRtl.value, containerRef.el)\n const scrollSize = getScrollSize(isHorizontal.value, containerRef.el)\n\n if (\n scrollSize <= offsetSize ||\n // Prevent scrolling by only a couple of pixels, which doesn't look smooth\n Math.abs(newPosition - scrollPosition) < 16\n ) return\n\n if (isHorizontal.value && isRtl.value && containerRef.el) {\n const { scrollWidth, offsetWidth: containerWidth } = containerRef.el!\n\n newPosition = (scrollWidth - containerWidth) - newPosition\n }\n\n if (isHorizontal.value) {\n goTo.horizontal(newPosition, goToOptions.value)\n } else {\n goTo(newPosition, goToOptions.value)\n }\n }\n\n function onScroll (e: Event) {\n const { scrollTop, scrollLeft } = e.target as HTMLElement\n\n scrollOffset.value = isHorizontal.value ? scrollLeft : scrollTop\n }\n\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n\n if (!isOverflowing.value || !contentRef.el) return\n\n // Focused element is likely to be the root of an item, so a\n // breadth-first search will probably find it in the first iteration\n for (const el of e.composedPath()) {\n for (const item of contentRef.el.children) {\n if (item === el) {\n scrollToChildren(item as HTMLElement)\n return\n }\n }\n }\n }\n\n function onFocusout (e: FocusEvent) {\n isFocused.value = false\n }\n\n // Affix clicks produce onFocus that we have to ignore to avoid extra scrollToChildren\n let ignoreFocusEvent = false\n function onFocus (e: FocusEvent) {\n if (\n !ignoreFocusEvent &&\n !isFocused.value &&\n !(e.relatedTarget && contentRef.el?.contains(e.relatedTarget as Node))\n ) focus()\n\n ignoreFocusEvent = false\n }\n\n function onFocusAffixes () {\n ignoreFocusEvent = true\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (!contentRef.el) return\n\n function toFocus (location: Parameters<typeof focus>[0]) {\n e.preventDefault()\n focus(location)\n }\n\n if (isHorizontal.value) {\n if (e.key === 'ArrowRight') {\n toFocus(isRtl.value ? 'prev' : 'next')\n } else if (e.key === 'ArrowLeft') {\n toFocus(isRtl.value ? 'next' : 'prev')\n }\n } else {\n if (e.key === 'ArrowDown') {\n toFocus('next')\n } else if (e.key === 'ArrowUp') {\n toFocus('prev')\n }\n }\n\n if (e.key === 'Home') {\n toFocus('first')\n } else if (e.key === 'End') {\n toFocus('last')\n }\n }\n\n function getSiblingElement (el: HTMLElement | null, location: 'next' | 'prev') {\n if (!el) return undefined\n let sibling: HTMLElement | null = el\n do {\n sibling = sibling?.[location === 'next' ? 'nextElementSibling' : 'previousElementSibling'] as HTMLElement | null\n } while (sibling?.hasAttribute('disabled'))\n return sibling\n }\n\n function focus (location?: 'next' | 'prev' | 'first' | 'last') {\n if (!contentRef.el) return\n\n let el: HTMLElement | null | undefined\n\n if (!location) {\n const focusable = focusableChildren(contentRef.el)\n el = focusable[0]\n } else if (location === 'next') {\n el = getSiblingElement(contentRef.el.querySelector(':focus'), location)\n\n if (!el) return focus('first')\n } else if (location === 'prev') {\n el = getSiblingElement(contentRef.el.querySelector(':focus'), location)\n\n if (!el) return focus('last')\n } else if (location === 'first') {\n el = (contentRef.el.firstElementChild as HTMLElement)\n\n if (el?.hasAttribute('disabled')) el = getSiblingElement(el, 'next')\n } else if (location === 'last') {\n el = (contentRef.el.lastElementChild as HTMLElement)\n\n if (el?.hasAttribute('disabled')) el = getSiblingElement(el, 'prev')\n }\n\n if (el) {\n el.focus({ preventScroll: true })\n }\n }\n\n function scrollTo (location: 'prev' | 'next') {\n const direction = isHorizontal.value && isRtl.value ? -1 : 1\n\n const offsetStep = (location === 'prev' ? -direction : direction) * containerSize.value\n\n let newPosition = scrollOffset.value + offsetStep\n\n // TODO: improve it\n if (isHorizontal.value && isRtl.value && containerRef.el) {\n const { scrollWidth, offsetWidth: containerWidth } = containerRef.el!\n\n newPosition += scrollWidth - containerWidth\n }\n\n scrollToPosition(newPosition)\n }\n\n const slotProps = computed(() => ({\n next: group.next,\n prev: group.prev,\n select: group.select,\n isSelected: group.isSelected,\n }))\n\n const hasOverflowOrScroll = computed(() => isOverflowing.value || Math.abs(scrollOffset.value) > 0)\n\n const hasAffixes = computed(() => {\n switch (props.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always': return true\n\n // Always show arrows on desktop\n case 'desktop': return !mobile.value\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true: return hasOverflowOrScroll.value\n\n // Always show on mobile\n case 'mobile': return (\n mobile.value ||\n hasOverflowOrScroll.value\n )\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default: return (\n !mobile.value &&\n hasOverflowOrScroll.value\n )\n }\n })\n\n const hasPrev = computed(() => {\n // 1 pixel in reserve, may be lost after rounding\n return Math.abs(scrollOffset.value) > 1\n })\n\n const hasNext = computed(() => {\n if (!containerRef.value || !hasOverflowOrScroll.value) return false\n\n const scrollSize = getScrollSize(isHorizontal.value, containerRef.el)\n const clientSize = getClientSize(isHorizontal.value, containerRef.el)\n\n const scrollSizeMax = scrollSize - clientSize\n\n // 1 pixel in reserve, may be lost after rounding\n return scrollSizeMax - Math.abs(scrollOffset.value) > 1\n })\n\n useRender(() => (\n <props.tag\n class={[\n 'v-slide-group',\n {\n 'v-slide-group--vertical': !isHorizontal.value,\n 'v-slide-group--has-affixes': hasAffixes.value,\n 'v-slide-group--is-overflowing': isOverflowing.value,\n },\n displayClasses.value,\n props.class,\n ]}\n style={ props.style }\n tabindex={ (isFocused.value || group.selected.value.length) ? -1 : 0 }\n onFocus={ onFocus }\n >\n { hasAffixes.value && (\n <div\n key=\"prev\"\n class={[\n 'v-slide-group__prev',\n { 'v-slide-group__prev--disabled': !hasPrev.value },\n ]}\n onMousedown={ onFocusAffixes }\n onClick={ () => hasPrev.value && scrollTo('prev') }\n >\n { slots.prev?.(slotProps.value) ?? (\n <VFadeTransition>\n <VIcon icon={ isRtl.value ? props.nextIcon : props.prevIcon }></VIcon>\n </VFadeTransition>\n )}\n </div>\n )}\n\n <div\n key=\"container\"\n ref={ containerRef }\n class={[\n 'v-slide-group__container',\n props.contentClass,\n ]}\n onScroll={ onScroll }\n >\n <div\n ref={ contentRef }\n class=\"v-slide-group__content\"\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n onKeydown={ onKeydown }\n >\n { slots.default?.(slotProps.value) }\n </div>\n </div>\n\n { hasAffixes.value && (\n <div\n key=\"next\"\n class={[\n 'v-slide-group__next',\n { 'v-slide-group__next--disabled': !hasNext.value },\n ]}\n onMousedown={ onFocusAffixes }\n onClick={ () => hasNext.value && scrollTo('next') }\n >\n { slots.next?.(slotProps.value) ?? (\n <VFadeTransition>\n <VIcon icon={ isRtl.value ? props.prevIcon : props.nextIcon }></VIcon>\n </VFadeTransition>\n )}\n </div>\n )}\n </props.tag>\n ))\n\n return {\n selected: group.selected,\n scrollTo,\n scrollOffset,\n focus,\n hasPrev,\n hasNext,\n }\n },\n})\n\nexport type VSlideGroup = InstanceType<typeof VSlideGroup>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VSlideGroup.js","names":["VFadeTransition","VIcon","makeComponentProps","makeDisplayProps","useDisplay","useGoTo","makeGroupProps","useGroup","IconValue","useRtl","useResizeObserver","makeTagProps","computed","shallowRef","watch","calculateCenteredTarget","calculateUpdatedTarget","getClientSize","getOffsetSize","getScrollPosition","getScrollSize","focusableChildren","genericComponent","IN_BROWSER","propsFactory","useRender","VSlideGroupSymbol","Symbol","for","makeVSlideGroupProps","centerActive","Boolean","scrollToActive","type","default","contentClass","direction","String","symbol","nextIcon","prevIcon","showArrows","validator","v","includes","mobile","selectedClass","VSlideGroup","name","props","emits","value","setup","_ref","slots","isRtl","displayClasses","group","isOverflowing","scrollOffset","containerSize","contentSize","isHorizontal","resizeRef","containerRef","contentRect","containerRect","contentRef","goTo","goToOptions","container","el","duration","easing","firstSelectedIndex","selected","length","items","findIndex","item","id","lastSelectedIndex","frame","cancelAnimationFrame","requestAnimationFrame","sizeProperty","selectedElement","children","scrollToChildren","isFocused","center","target","containerElement","scrollToPosition","newPosition","offsetSize","scrollPosition","scrollSize","Math","abs","scrollWidth","offsetWidth","containerWidth","horizontal","onScroll","e","scrollTop","scrollLeft","onFocusin","composedPath","onFocusout","ignoreFocusEvent","onFocus","relatedTarget","contains","focus","onFocusAffixes","onKeydown","toFocus","location","preventDefault","key","getSiblingElement","undefined","sibling","hasAttribute","focusable","querySelector","firstElementChild","lastElementChild","preventScroll","scrollTo","offsetStep","slotProps","next","prev","select","isSelected","hasOverflowOrScroll","hasAffixes","hasPrev","hasNext","clientSize","scrollSizeMax","_createVNode","tag","_normalizeClass","class","_normalizeStyle","style","_createElementVNode","onClick"],"sources":["../../../src/components/VSlideGroup/VSlideGroup.tsx"],"sourcesContent":["// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport { VFadeTransition } from '@/components/transitions'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { useGoTo } from '@/composables/goto'\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { IconValue } from '@/composables/icons'\nimport { useRtl } from '@/composables/locale'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, shallowRef, watch } from 'vue'\nimport {\n calculateCenteredTarget,\n calculateUpdatedTarget,\n getClientSize,\n getOffsetSize,\n getScrollPosition,\n getScrollSize,\n} from './helpers'\nimport { focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { GoToOptions } from '@/composables/goto'\nimport type { GroupProvide } from '@/composables/group'\nimport type { GenericProps } from '@/util'\n\nexport const VSlideGroupSymbol: InjectionKey<GroupProvide> = Symbol.for('vuetify:v-slide-group')\n\ninterface SlideGroupSlot {\n next: GroupProvide['next']\n prev: GroupProvide['prev']\n select: GroupProvide['select']\n isSelected: GroupProvide['isSelected']\n}\n\nexport type VSlideGroupSlots = {\n default: SlideGroupSlot\n prev: SlideGroupSlot\n next: SlideGroupSlot\n}\n\nexport const makeVSlideGroupProps = propsFactory({\n centerActive: Boolean,\n scrollToActive: {\n type: Boolean,\n default: true,\n },\n contentClass: null,\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n symbol: {\n type: null,\n default: VSlideGroupSymbol,\n },\n nextIcon: {\n type: IconValue,\n default: '$next',\n },\n prevIcon: {\n type: IconValue,\n default: '$prev',\n },\n showArrows: {\n type: [Boolean, String],\n validator: (v: any) => (\n typeof v === 'boolean' || [\n 'always',\n 'desktop',\n 'mobile',\n 'never',\n ].includes(v)\n ),\n },\n\n ...makeComponentProps(),\n ...makeDisplayProps({ mobile: null }),\n ...makeTagProps(),\n ...makeGroupProps({\n selectedClass: 'v-slide-group-item--active',\n }),\n}, 'VSlideGroup')\n\nexport const VSlideGroup = genericComponent<new <T>(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VSlideGroupSlots,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VSlideGroup',\n\n props: makeVSlideGroupProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const { isRtl } = useRtl()\n const { displayClasses, mobile } = useDisplay(props)\n const group = useGroup(props, props.symbol)\n const isOverflowing = shallowRef(false)\n const scrollOffset = shallowRef(0)\n const containerSize = shallowRef(0)\n const contentSize = shallowRef(0)\n const isHorizontal = computed(() => props.direction === 'horizontal')\n\n const { resizeRef: containerRef, contentRect: containerRect } = useResizeObserver()\n const { resizeRef: contentRef, contentRect } = useResizeObserver()\n\n const goTo = useGoTo()\n const goToOptions = computed<Partial<GoToOptions>>(() => {\n return {\n container: containerRef.el,\n duration: 200,\n easing: 'easeOutQuart',\n }\n })\n\n const firstSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1\n\n return group.items.value.findIndex(item => item.id === group.selected.value[0])\n })\n\n const lastSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1\n\n return group.items.value.findIndex(item => item.id === group.selected.value[group.selected.value.length - 1])\n })\n\n if (IN_BROWSER) {\n let frame = -1\n watch(() => [group.selected.value, containerRect.value, contentRect.value, isHorizontal.value], () => {\n cancelAnimationFrame(frame)\n frame = requestAnimationFrame(() => {\n if (containerRect.value && contentRect.value) {\n const sizeProperty = isHorizontal.value ? 'width' : 'height'\n\n containerSize.value = containerRect.value[sizeProperty]\n contentSize.value = contentRect.value[sizeProperty]\n\n isOverflowing.value = containerSize.value + 1 < contentSize.value\n }\n\n if (props.scrollToActive && firstSelectedIndex.value >= 0 && contentRef.el) {\n // TODO: Is this too naive? Should we store element references in group composable?\n const selectedElement = contentRef.el.children[lastSelectedIndex.value] as HTMLElement\n\n scrollToChildren(selectedElement, props.centerActive)\n }\n })\n })\n }\n\n const isFocused = shallowRef(false)\n\n function scrollToChildren (children: HTMLElement, center?: boolean) {\n let target = 0\n\n if (center) {\n target = calculateCenteredTarget({\n containerElement: containerRef.el!,\n isHorizontal: isHorizontal.value,\n selectedElement: children,\n })\n } else {\n target = calculateUpdatedTarget({\n containerElement: containerRef.el!,\n isHorizontal: isHorizontal.value,\n isRtl: isRtl.value,\n selectedElement: children,\n })\n }\n\n scrollToPosition(target)\n }\n\n function scrollToPosition (newPosition: number) {\n if (!IN_BROWSER || !containerRef.el) return\n\n const offsetSize = getOffsetSize(isHorizontal.value, containerRef.el)\n const scrollPosition = getScrollPosition(isHorizontal.value, isRtl.value, containerRef.el)\n const scrollSize = getScrollSize(isHorizontal.value, containerRef.el)\n\n if (\n scrollSize <= offsetSize ||\n // Prevent scrolling by only a couple of pixels, which doesn't look smooth\n Math.abs(newPosition - scrollPosition) < 16\n ) return\n\n if (isHorizontal.value && isRtl.value && containerRef.el) {\n const { scrollWidth, offsetWidth: containerWidth } = containerRef.el!\n\n newPosition = (scrollWidth - containerWidth) - newPosition\n }\n\n if (isHorizontal.value) {\n goTo.horizontal(newPosition, goToOptions.value)\n } else {\n goTo(newPosition, goToOptions.value)\n }\n }\n\n function onScroll (e: Event) {\n const { scrollTop, scrollLeft } = e.target as HTMLElement\n\n scrollOffset.value = isHorizontal.value ? scrollLeft : scrollTop\n }\n\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n\n if (!isOverflowing.value || !contentRef.el) return\n\n // Focused element is likely to be the root of an item, so a\n // breadth-first search will probably find it in the first iteration\n for (const el of e.composedPath()) {\n for (const item of contentRef.el.children) {\n if (item === el) {\n scrollToChildren(item as HTMLElement)\n return\n }\n }\n }\n }\n\n function onFocusout (e: FocusEvent) {\n isFocused.value = false\n }\n\n // Affix clicks produce onFocus that we have to ignore to avoid extra scrollToChildren\n let ignoreFocusEvent = false\n function onFocus (e: FocusEvent) {\n if (\n !ignoreFocusEvent &&\n !isFocused.value &&\n !(e.relatedTarget && contentRef.el?.contains(e.relatedTarget as Node))\n ) focus()\n\n ignoreFocusEvent = false\n }\n\n function onFocusAffixes () {\n ignoreFocusEvent = true\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (!contentRef.el) return\n\n function toFocus (location: Parameters<typeof focus>[0]) {\n e.preventDefault()\n focus(location)\n }\n\n if (isHorizontal.value) {\n if (e.key === 'ArrowRight') {\n toFocus(isRtl.value ? 'prev' : 'next')\n } else if (e.key === 'ArrowLeft') {\n toFocus(isRtl.value ? 'next' : 'prev')\n }\n } else {\n if (e.key === 'ArrowDown') {\n toFocus('next')\n } else if (e.key === 'ArrowUp') {\n toFocus('prev')\n }\n }\n\n if (e.key === 'Home') {\n toFocus('first')\n } else if (e.key === 'End') {\n toFocus('last')\n }\n }\n\n function getSiblingElement (el: HTMLElement | null, location: 'next' | 'prev') {\n if (!el) return undefined\n let sibling: HTMLElement | null = el\n do {\n sibling = sibling?.[location === 'next' ? 'nextElementSibling' : 'previousElementSibling'] as HTMLElement | null\n } while (sibling?.hasAttribute('disabled'))\n return sibling\n }\n\n function focus (location?: 'next' | 'prev' | 'first' | 'last') {\n if (!contentRef.el) return\n\n let el: HTMLElement | null | undefined\n\n if (!location) {\n const focusable = focusableChildren(contentRef.el)\n el = focusable[0]\n } else if (location === 'next') {\n el = getSiblingElement(contentRef.el.querySelector(':focus'), location)\n\n if (!el) return focus('first')\n } else if (location === 'prev') {\n el = getSiblingElement(contentRef.el.querySelector(':focus'), location)\n\n if (!el) return focus('last')\n } else if (location === 'first') {\n el = (contentRef.el.firstElementChild as HTMLElement)\n\n if (el?.hasAttribute('disabled')) el = getSiblingElement(el, 'next')\n } else if (location === 'last') {\n el = (contentRef.el.lastElementChild as HTMLElement)\n\n if (el?.hasAttribute('disabled')) el = getSiblingElement(el, 'prev')\n }\n\n if (el) {\n el.focus({ preventScroll: true })\n }\n }\n\n function scrollTo (location: 'prev' | 'next') {\n const direction = isHorizontal.value && isRtl.value ? -1 : 1\n\n const offsetStep = (location === 'prev' ? -direction : direction) * containerSize.value\n\n let newPosition = scrollOffset.value + offsetStep\n\n // TODO: improve it\n if (isHorizontal.value && isRtl.value && containerRef.el) {\n const { scrollWidth, offsetWidth: containerWidth } = containerRef.el!\n\n newPosition += scrollWidth - containerWidth\n }\n\n scrollToPosition(newPosition)\n }\n\n const slotProps = computed(() => ({\n next: group.next,\n prev: group.prev,\n select: group.select,\n isSelected: group.isSelected,\n }))\n\n const hasOverflowOrScroll = computed(() => isOverflowing.value || Math.abs(scrollOffset.value) > 0)\n\n const hasAffixes = computed(() => {\n switch (props.showArrows) {\n case 'never': return false\n\n // Always show arrows on desktop & mobile\n case 'always': return true\n\n // Always show arrows on desktop\n case 'desktop': return !mobile.value\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true: return hasOverflowOrScroll.value\n\n // Always show on mobile\n case 'mobile': return (\n mobile.value ||\n hasOverflowOrScroll.value\n )\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default: return (\n !mobile.value &&\n hasOverflowOrScroll.value\n )\n }\n })\n\n const hasPrev = computed(() => {\n // 1 pixel in reserve, may be lost after rounding\n return Math.abs(scrollOffset.value) > 1\n })\n\n const hasNext = computed(() => {\n if (!containerRef.value || !hasOverflowOrScroll.value) return false\n\n const scrollSize = getScrollSize(isHorizontal.value, containerRef.el)\n const clientSize = getClientSize(isHorizontal.value, containerRef.el)\n\n const scrollSizeMax = scrollSize - clientSize\n\n // 1 pixel in reserve, may be lost after rounding\n return scrollSizeMax - Math.abs(scrollOffset.value) > 1\n })\n\n useRender(() => (\n <props.tag\n class={[\n 'v-slide-group',\n {\n 'v-slide-group--vertical': !isHorizontal.value,\n 'v-slide-group--has-affixes': hasAffixes.value,\n 'v-slide-group--is-overflowing': isOverflowing.value,\n },\n displayClasses.value,\n props.class,\n ]}\n style={ props.style }\n tabindex={ (isFocused.value || group.selected.value.length) ? -1 : 0 }\n onFocus={ onFocus }\n >\n { hasAffixes.value && (\n <div\n key=\"prev\"\n class={[\n 'v-slide-group__prev',\n { 'v-slide-group__prev--disabled': !hasPrev.value },\n ]}\n onMousedown={ onFocusAffixes }\n onClick={ () => hasPrev.value && scrollTo('prev') }\n >\n { slots.prev?.(slotProps.value) ?? (\n <VFadeTransition>\n <VIcon icon={ isRtl.value ? props.nextIcon : props.prevIcon }></VIcon>\n </VFadeTransition>\n )}\n </div>\n )}\n\n <div\n key=\"container\"\n ref={ containerRef }\n class={[\n 'v-slide-group__container',\n props.contentClass,\n ]}\n onScroll={ onScroll }\n >\n <div\n ref={ contentRef }\n class=\"v-slide-group__content\"\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n onKeydown={ onKeydown }\n >\n { slots.default?.(slotProps.value) }\n </div>\n </div>\n\n { hasAffixes.value && (\n <div\n key=\"next\"\n class={[\n 'v-slide-group__next',\n { 'v-slide-group__next--disabled': !hasNext.value },\n ]}\n onMousedown={ onFocusAffixes }\n onClick={ () => hasNext.value && scrollTo('next') }\n >\n { slots.next?.(slotProps.value) ?? (\n <VFadeTransition>\n <VIcon icon={ isRtl.value ? props.prevIcon : props.nextIcon }></VIcon>\n </VFadeTransition>\n )}\n </div>\n )}\n </props.tag>\n ))\n\n return {\n selected: group.selected,\n scrollTo,\n scrollOffset,\n focus,\n hasPrev,\n hasNext,\n }\n },\n})\n\nexport type VSlideGroup = InstanceType<typeof VSlideGroup>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -45,6 +45,7 @@ export declare const makeVTabProps: <Defaults extends {
|
|
|
45
45
|
sliderTransition?: unknown;
|
|
46
46
|
sliderTransitionDuration?: unknown;
|
|
47
47
|
hideSlider?: unknown;
|
|
48
|
+
inset?: unknown;
|
|
48
49
|
direction?: unknown;
|
|
49
50
|
} = {}>(defaults?: Defaults | undefined) => {
|
|
50
51
|
theme: unknown extends Defaults["theme"] ? StringConstructor : {
|
|
@@ -315,6 +316,10 @@ export declare const makeVTabProps: <Defaults extends {
|
|
|
315
316
|
type: PropType<unknown extends Defaults["hideSlider"] ? boolean : boolean | Defaults["hideSlider"]>;
|
|
316
317
|
default: unknown extends Defaults["hideSlider"] ? boolean : boolean | Defaults["hideSlider"];
|
|
317
318
|
};
|
|
319
|
+
inset: unknown extends Defaults["inset"] ? BooleanConstructor : {
|
|
320
|
+
type: PropType<unknown extends Defaults["inset"] ? boolean : boolean | Defaults["inset"]>;
|
|
321
|
+
default: unknown extends Defaults["inset"] ? boolean : boolean | Defaults["inset"];
|
|
322
|
+
};
|
|
318
323
|
direction: unknown extends Defaults["direction"] ? {
|
|
319
324
|
type: PropType<"horizontal" | "vertical">;
|
|
320
325
|
default: string;
|
|
@@ -347,6 +352,7 @@ export declare const VTab: {
|
|
|
347
352
|
};
|
|
348
353
|
fixed: boolean;
|
|
349
354
|
hideSlider: boolean;
|
|
355
|
+
inset: boolean;
|
|
350
356
|
direction: "horizontal" | "vertical";
|
|
351
357
|
} & {
|
|
352
358
|
theme?: string | undefined;
|
|
@@ -774,6 +780,7 @@ export declare const VTab: {
|
|
|
774
780
|
text: string | number | boolean;
|
|
775
781
|
fixed: boolean;
|
|
776
782
|
hideSlider: boolean;
|
|
783
|
+
inset: boolean;
|
|
777
784
|
direction: "horizontal" | "vertical";
|
|
778
785
|
}, true, {}, import("vue").SlotsType<Partial<{
|
|
779
786
|
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
@@ -815,6 +822,7 @@ export declare const VTab: {
|
|
|
815
822
|
};
|
|
816
823
|
fixed: boolean;
|
|
817
824
|
hideSlider: boolean;
|
|
825
|
+
inset: boolean;
|
|
818
826
|
direction: "horizontal" | "vertical";
|
|
819
827
|
} & {
|
|
820
828
|
theme?: string | undefined;
|
|
@@ -1242,6 +1250,7 @@ export declare const VTab: {
|
|
|
1242
1250
|
text: string | number | boolean;
|
|
1243
1251
|
fixed: boolean;
|
|
1244
1252
|
hideSlider: boolean;
|
|
1253
|
+
inset: boolean;
|
|
1245
1254
|
direction: "horizontal" | "vertical";
|
|
1246
1255
|
}>;
|
|
1247
1256
|
__isFragment?: undefined;
|
|
@@ -1267,6 +1276,7 @@ export declare const VTab: {
|
|
|
1267
1276
|
};
|
|
1268
1277
|
fixed: boolean;
|
|
1269
1278
|
hideSlider: boolean;
|
|
1279
|
+
inset: boolean;
|
|
1270
1280
|
direction: "horizontal" | "vertical";
|
|
1271
1281
|
} & {
|
|
1272
1282
|
theme?: string | undefined;
|
|
@@ -1694,6 +1704,7 @@ export declare const VTab: {
|
|
|
1694
1704
|
text: string | number | boolean;
|
|
1695
1705
|
fixed: boolean;
|
|
1696
1706
|
hideSlider: boolean;
|
|
1707
|
+
inset: boolean;
|
|
1697
1708
|
direction: "horizontal" | "vertical";
|
|
1698
1709
|
}, {}, string, import("vue").SlotsType<Partial<{
|
|
1699
1710
|
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
@@ -1795,6 +1806,7 @@ export declare const VTab: {
|
|
|
1795
1806
|
sliderTransition: PropType<"fade" | "grow" | "shift">;
|
|
1796
1807
|
sliderTransitionDuration: (NumberConstructor | StringConstructor)[];
|
|
1797
1808
|
hideSlider: BooleanConstructor;
|
|
1809
|
+
inset: BooleanConstructor;
|
|
1798
1810
|
direction: {
|
|
1799
1811
|
type: PropType<"horizontal" | "vertical">;
|
|
1800
1812
|
default: string;
|
|
@@ -1886,6 +1898,7 @@ export declare const VTab: {
|
|
|
1886
1898
|
sliderTransition: PropType<"fade" | "grow" | "shift">;
|
|
1887
1899
|
sliderTransitionDuration: (NumberConstructor | StringConstructor)[];
|
|
1888
1900
|
hideSlider: BooleanConstructor;
|
|
1901
|
+
inset: BooleanConstructor;
|
|
1889
1902
|
direction: {
|
|
1890
1903
|
type: PropType<"horizontal" | "vertical">;
|
|
1891
1904
|
default: string;
|
|
@@ -15,6 +15,7 @@ export const makeVTabProps = propsFactory({
|
|
|
15
15
|
sliderTransition: String,
|
|
16
16
|
sliderTransitionDuration: [String, Number],
|
|
17
17
|
hideSlider: Boolean,
|
|
18
|
+
inset: Boolean,
|
|
18
19
|
direction: {
|
|
19
20
|
type: String,
|
|
20
21
|
default: 'horizontal'
|
|
@@ -109,8 +110,8 @@ export const VTab = genericComponent()({
|
|
|
109
110
|
return _createVNode(VBtn, _mergeProps({
|
|
110
111
|
"symbol": VTabsSymbol,
|
|
111
112
|
"ref": rootEl,
|
|
112
|
-
"class": ['v-tab', props.class, isSelected.value ? insetColorClasses.value : []],
|
|
113
|
-
"style": [props.style, isSelected.value ? insetColorStyles.value : []],
|
|
113
|
+
"class": ['v-tab', props.class, isSelected.value && props.inset ? insetColorClasses.value : []],
|
|
114
|
+
"style": [props.style, isSelected.value && props.inset ? insetColorStyles.value : []],
|
|
114
115
|
"tabindex": isSelected.value ? 0 : -1,
|
|
115
116
|
"role": "tab",
|
|
116
117
|
"aria-selected": String(isSelected.value),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VTab.js","names":["makeVBtnProps","VBtn","useBackgroundColor","useTextColor","forwardRefs","computed","ref","VTabsSymbol","animate","genericComponent","omit","propsFactory","standardEasing","useRender","makeVTabProps","fixed","Boolean","sliderColor","String","sliderTransition","sliderTransitionDuration","Number","hideSlider","direction","type","default","selectedClass","variant","VTab","name","props","setup","_ref","slots","attrs","textColorClasses","sliderColorClasses","textColorStyles","sliderColorStyles","backgroundColorClasses","insetColorClasses","backgroundColorStyles","insetColorStyles","rootEl","sliderEl","isHorizontal","isSelected","value","group","fade","nextEl","prevEl","opacity","grow","transform","shift","prevBox","getBoundingClientRect","nextBox","xy","XY","rightBottom","widthHeight","prevPos","nextPos","delta","origin","Math","sign","size","abs","scale","max","initialScale","sigma","transformOrigin","Array","fill","updateSlider","_ref2","$el","parentElement","querySelector","color","getComputedStyle","keyframes","duration","backgroundColor","easing","btnProps","filterProps","_createVNode","_mergeProps","class","style","undefined","_createElementVNode","_Fragment","text","_normalizeClass","_normalizeStyle"],"sources":["../../../src/components/VTabs/VTab.tsx"],"sourcesContent":["// Styles\nimport './VTab.sass'\n\n// Components\nimport { makeVBtnProps, VBtn } from '@/components/VBtn/VBtn'\n\n// Composables\nimport { useBackgroundColor, useTextColor } from '@/composables/color'\nimport { forwardRefs } from '@/composables/forwardRefs'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { VTabsSymbol } from './shared'\nimport { animate, genericComponent, omit, propsFactory, standardEasing, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VBtnSlots } from '@/components/VBtn/VBtn'\n\nexport const makeVTabProps = propsFactory({\n fixed: Boolean,\n\n sliderColor: String,\n sliderTransition: String as PropType<'shift' | 'grow' | 'fade'>,\n sliderTransitionDuration: [String, Number],\n hideSlider: Boolean,\n\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n\n ...omit(makeVBtnProps({\n selectedClass: 'v-tab--selected',\n variant: 'text' as const,\n }), [\n 'active',\n 'block',\n 'flat',\n 'location',\n 'position',\n 'symbol',\n ]),\n}, 'VTab')\n\nexport const VTab = genericComponent<VBtnSlots>()({\n name: 'VTab',\n\n props: makeVTabProps(),\n\n setup (props, { slots, attrs }) {\n const {\n textColorClasses: sliderColorClasses,\n textColorStyles: sliderColorStyles,\n } = useTextColor(() => props.sliderColor)\n const {\n backgroundColorClasses: insetColorClasses,\n backgroundColorStyles: insetColorStyles,\n } = useBackgroundColor(() => props.sliderColor)\n\n const rootEl = ref<VBtn>()\n const sliderEl = ref<HTMLElement>()\n\n const isHorizontal = computed(() => props.direction === 'horizontal')\n const isSelected = computed(() => rootEl.value?.group?.isSelected.value ?? false)\n\n function fade (nextEl: HTMLElement, prevEl: HTMLElement) {\n return { opacity: [0, 1] }\n }\n\n function grow (nextEl: HTMLElement, prevEl: HTMLElement) {\n return props.direction === 'vertical'\n ? { transform: ['scaleY(0)', 'scaleY(1)'] }\n : { transform: ['scaleX(0)', 'scaleX(1)'] }\n }\n\n function shift (nextEl: HTMLElement, prevEl: HTMLElement) {\n const prevBox = prevEl.getBoundingClientRect()\n const nextBox = nextEl.getBoundingClientRect()\n\n const xy = isHorizontal.value ? 'x' : 'y'\n const XY = isHorizontal.value ? 'X' : 'Y'\n const rightBottom = isHorizontal.value ? 'right' : 'bottom'\n const widthHeight = isHorizontal.value ? 'width' : 'height'\n\n const prevPos = prevBox[xy]\n const nextPos = nextBox[xy]\n const delta = prevPos > nextPos\n ? prevBox[rightBottom] - nextBox[rightBottom]\n : prevBox[xy] - nextBox[xy]\n const origin =\n Math.sign(delta) > 0 ? (isHorizontal.value ? 'right' : 'bottom')\n : Math.sign(delta) < 0 ? (isHorizontal.value ? 'left' : 'top')\n : 'center'\n const size = Math.abs(delta) + (Math.sign(delta) < 0 ? prevBox[widthHeight] : nextBox[widthHeight])\n const scale = size / Math.max(prevBox[widthHeight], nextBox[widthHeight]) || 0\n const initialScale = prevBox[widthHeight] / nextBox[widthHeight] || 0\n const sigma = 1.5\n\n return {\n transform: [\n `translate${XY}(${delta}px) scale${XY}(${initialScale})`,\n `translate${XY}(${delta / sigma}px) scale${XY}(${(scale - 1) / sigma + 1})`,\n 'none',\n ],\n transformOrigin: Array(3).fill(origin),\n }\n }\n\n function updateSlider ({ value }: { value: boolean }) {\n if (value) {\n const prevEl: HTMLElement | undefined = rootEl.value?.$el.parentElement?.querySelector('.v-tab--selected .v-tab__slider')\n const nextEl = sliderEl.value\n\n if (!prevEl || !nextEl) return\n\n const color = getComputedStyle(prevEl).color\n\n const keyframes = { fade, grow, shift }[props.sliderTransition ?? 'shift'] ?? shift\n const duration = Number(props.sliderTransitionDuration) ||\n ({ fade: 400, grow: 350, shift: 225 }[props.sliderTransition ?? 'shift'] ?? 225)\n\n animate(nextEl, {\n backgroundColor: [color, 'currentcolor'],\n ...keyframes(nextEl, prevEl),\n }, {\n duration,\n easing: standardEasing,\n })\n }\n }\n\n useRender(() => {\n const btnProps = VBtn.filterProps(props)\n\n return (\n <VBtn\n symbol={ VTabsSymbol }\n ref={ rootEl }\n class={[\n 'v-tab',\n props.class,\n isSelected.value ? insetColorClasses.value : [],\n ]}\n style={[\n props.style,\n isSelected.value ? insetColorStyles.value : [],\n ]}\n tabindex={ isSelected.value ? 0 : -1 }\n role=\"tab\"\n aria-selected={ String(isSelected.value) }\n active={ false }\n { ...btnProps }\n { ...attrs }\n block={ props.fixed }\n maxWidth={ props.fixed ? 300 : undefined }\n onGroup:selected={ updateSlider }\n >\n {{\n ...slots,\n default: () => (\n <>\n { slots.default?.() ?? props.text }\n\n { !props.hideSlider && (\n <div\n ref={ sliderEl }\n class={[\n 'v-tab__slider',\n sliderColorClasses.value,\n ]}\n style={ sliderColorStyles.value }\n />\n )}\n </>\n ),\n }}\n </VBtn>\n )\n })\n\n return forwardRefs({}, rootEl)\n },\n})\n\nexport type VTab = InstanceType<typeof VTab>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VTab.js","names":["makeVBtnProps","VBtn","useBackgroundColor","useTextColor","forwardRefs","computed","ref","VTabsSymbol","animate","genericComponent","omit","propsFactory","standardEasing","useRender","makeVTabProps","fixed","Boolean","sliderColor","String","sliderTransition","sliderTransitionDuration","Number","hideSlider","inset","direction","type","default","selectedClass","variant","VTab","name","props","setup","_ref","slots","attrs","textColorClasses","sliderColorClasses","textColorStyles","sliderColorStyles","backgroundColorClasses","insetColorClasses","backgroundColorStyles","insetColorStyles","rootEl","sliderEl","isHorizontal","isSelected","value","group","fade","nextEl","prevEl","opacity","grow","transform","shift","prevBox","getBoundingClientRect","nextBox","xy","XY","rightBottom","widthHeight","prevPos","nextPos","delta","origin","Math","sign","size","abs","scale","max","initialScale","sigma","transformOrigin","Array","fill","updateSlider","_ref2","$el","parentElement","querySelector","color","getComputedStyle","keyframes","duration","backgroundColor","easing","btnProps","filterProps","_createVNode","_mergeProps","class","style","undefined","_createElementVNode","_Fragment","text","_normalizeClass","_normalizeStyle"],"sources":["../../../src/components/VTabs/VTab.tsx"],"sourcesContent":["// Styles\nimport './VTab.sass'\n\n// Components\nimport { makeVBtnProps, VBtn } from '@/components/VBtn/VBtn'\n\n// Composables\nimport { useBackgroundColor, useTextColor } from '@/composables/color'\nimport { forwardRefs } from '@/composables/forwardRefs'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { VTabsSymbol } from './shared'\nimport { animate, genericComponent, omit, propsFactory, standardEasing, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VBtnSlots } from '@/components/VBtn/VBtn'\n\nexport const makeVTabProps = propsFactory({\n fixed: Boolean,\n\n sliderColor: String,\n sliderTransition: String as PropType<'shift' | 'grow' | 'fade'>,\n sliderTransitionDuration: [String, Number],\n hideSlider: Boolean,\n inset: Boolean,\n\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n\n ...omit(makeVBtnProps({\n selectedClass: 'v-tab--selected',\n variant: 'text' as const,\n }), [\n 'active',\n 'block',\n 'flat',\n 'location',\n 'position',\n 'symbol',\n ]),\n}, 'VTab')\n\nexport const VTab = genericComponent<VBtnSlots>()({\n name: 'VTab',\n\n props: makeVTabProps(),\n\n setup (props, { slots, attrs }) {\n const {\n textColorClasses: sliderColorClasses,\n textColorStyles: sliderColorStyles,\n } = useTextColor(() => props.sliderColor)\n const {\n backgroundColorClasses: insetColorClasses,\n backgroundColorStyles: insetColorStyles,\n } = useBackgroundColor(() => props.sliderColor)\n\n const rootEl = ref<VBtn>()\n const sliderEl = ref<HTMLElement>()\n\n const isHorizontal = computed(() => props.direction === 'horizontal')\n const isSelected = computed(() => rootEl.value?.group?.isSelected.value ?? false)\n\n function fade (nextEl: HTMLElement, prevEl: HTMLElement) {\n return { opacity: [0, 1] }\n }\n\n function grow (nextEl: HTMLElement, prevEl: HTMLElement) {\n return props.direction === 'vertical'\n ? { transform: ['scaleY(0)', 'scaleY(1)'] }\n : { transform: ['scaleX(0)', 'scaleX(1)'] }\n }\n\n function shift (nextEl: HTMLElement, prevEl: HTMLElement) {\n const prevBox = prevEl.getBoundingClientRect()\n const nextBox = nextEl.getBoundingClientRect()\n\n const xy = isHorizontal.value ? 'x' : 'y'\n const XY = isHorizontal.value ? 'X' : 'Y'\n const rightBottom = isHorizontal.value ? 'right' : 'bottom'\n const widthHeight = isHorizontal.value ? 'width' : 'height'\n\n const prevPos = prevBox[xy]\n const nextPos = nextBox[xy]\n const delta = prevPos > nextPos\n ? prevBox[rightBottom] - nextBox[rightBottom]\n : prevBox[xy] - nextBox[xy]\n const origin =\n Math.sign(delta) > 0 ? (isHorizontal.value ? 'right' : 'bottom')\n : Math.sign(delta) < 0 ? (isHorizontal.value ? 'left' : 'top')\n : 'center'\n const size = Math.abs(delta) + (Math.sign(delta) < 0 ? prevBox[widthHeight] : nextBox[widthHeight])\n const scale = size / Math.max(prevBox[widthHeight], nextBox[widthHeight]) || 0\n const initialScale = prevBox[widthHeight] / nextBox[widthHeight] || 0\n const sigma = 1.5\n\n return {\n transform: [\n `translate${XY}(${delta}px) scale${XY}(${initialScale})`,\n `translate${XY}(${delta / sigma}px) scale${XY}(${(scale - 1) / sigma + 1})`,\n 'none',\n ],\n transformOrigin: Array(3).fill(origin),\n }\n }\n\n function updateSlider ({ value }: { value: boolean }) {\n if (value) {\n const prevEl: HTMLElement | undefined = rootEl.value?.$el.parentElement?.querySelector('.v-tab--selected .v-tab__slider')\n const nextEl = sliderEl.value\n\n if (!prevEl || !nextEl) return\n\n const color = getComputedStyle(prevEl).color\n\n const keyframes = { fade, grow, shift }[props.sliderTransition ?? 'shift'] ?? shift\n const duration = Number(props.sliderTransitionDuration) ||\n ({ fade: 400, grow: 350, shift: 225 }[props.sliderTransition ?? 'shift'] ?? 225)\n\n animate(nextEl, {\n backgroundColor: [color, 'currentcolor'],\n ...keyframes(nextEl, prevEl),\n }, {\n duration,\n easing: standardEasing,\n })\n }\n }\n\n useRender(() => {\n const btnProps = VBtn.filterProps(props)\n\n return (\n <VBtn\n symbol={ VTabsSymbol }\n ref={ rootEl }\n class={[\n 'v-tab',\n props.class,\n isSelected.value && props.inset ? insetColorClasses.value : [],\n ]}\n style={[\n props.style,\n isSelected.value && props.inset ? insetColorStyles.value : [],\n ]}\n tabindex={ isSelected.value ? 0 : -1 }\n role=\"tab\"\n aria-selected={ String(isSelected.value) }\n active={ false }\n { ...btnProps }\n { ...attrs }\n block={ props.fixed }\n maxWidth={ props.fixed ? 300 : undefined }\n onGroup:selected={ updateSlider }\n >\n {{\n ...slots,\n default: () => (\n <>\n { slots.default?.() ?? props.text }\n\n { !props.hideSlider && (\n <div\n ref={ sliderEl }\n class={[\n 'v-tab__slider',\n sliderColorClasses.value,\n ]}\n style={ sliderColorStyles.value }\n />\n )}\n </>\n ),\n }}\n </VBtn>\n )\n })\n\n return forwardRefs({}, rootEl)\n },\n})\n\nexport type VTab = InstanceType<typeof VTab>\n"],"mappings":"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","ignoreList":[]}
|