vuetify 3.2.3 → 3.2.4
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 +9 -9
- package/dist/json/importMap.json +12 -12
- package/dist/json/web-types.json +11 -11
- package/dist/vuetify-labs.css +34 -35
- package/dist/vuetify-labs.d.ts +72 -72
- package/dist/vuetify-labs.esm.js +142 -124
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +142 -124
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +1 -2
- package/dist/vuetify.d.ts +75 -68
- package/dist/vuetify.esm.js +131 -115
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +131 -115
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +469 -469
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAlert/VAlert.mjs +1 -2
- package/lib/components/VAlert/VAlert.mjs.map +1 -1
- package/lib/components/VAppBar/VAppBar.mjs +2 -2
- package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
- package/lib/components/VAppBar/VAppBarNavIcon.mjs +1 -2
- package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
- package/lib/components/VAppBar/VAppBarTitle.mjs +1 -2
- package/lib/components/VAppBar/VAppBarTitle.mjs.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs +5 -5
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/index.d.ts +9 -9
- package/lib/components/VChip/VChip.css +0 -1
- package/lib/components/VChip/VChip.sass +0 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.mjs +5 -5
- package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.mjs +5 -5
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/index.d.ts +9 -9
- package/lib/components/VFooter/VFooter.mjs +2 -2
- package/lib/components/VFooter/VFooter.mjs.map +1 -1
- package/lib/components/VForm/index.d.ts +3 -3
- package/lib/components/VImg/VImg.mjs +6 -6
- package/lib/components/VImg/VImg.mjs.map +1 -1
- package/lib/components/VImg/index.d.ts +12 -12
- package/lib/components/VList/VList.mjs +2 -2
- package/lib/components/VList/VList.mjs.map +1 -1
- package/lib/components/VList/index.d.ts +9 -9
- package/lib/components/VList/list.mjs +4 -4
- package/lib/components/VList/list.mjs.map +1 -1
- package/lib/components/VMenu/VMenu.mjs +3 -3
- package/lib/components/VMenu/VMenu.mjs.map +1 -1
- package/lib/components/VMenu/index.d.ts +3 -3
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +2 -2
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
- package/lib/components/VNavigationDrawer/index.d.ts +3 -3
- package/lib/components/VNavigationDrawer/sticky.mjs +5 -4
- package/lib/components/VNavigationDrawer/sticky.mjs.map +1 -1
- package/lib/components/VNavigationDrawer/touch.mjs +4 -4
- package/lib/components/VNavigationDrawer/touch.mjs.map +1 -1
- package/lib/components/VOverlay/locationStrategies.mjs +1 -1
- package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
- package/lib/components/VPagination/VPagination.mjs +2 -2
- package/lib/components/VPagination/VPagination.mjs.map +1 -1
- package/lib/components/VRating/VRating.mjs +6 -3
- package/lib/components/VRating/VRating.mjs.map +1 -1
- package/lib/components/VSelect/VSelect.mjs +2 -2
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/index.d.ts +9 -9
- package/lib/components/VSelectionControl/VSelectionControl.mjs +3 -3
- package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
- package/lib/components/VSelectionControl/index.d.ts +3 -3
- package/lib/components/VSlideGroup/VSlideGroup.mjs +7 -7
- package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
- package/lib/components/VSlideGroup/index.d.ts +3 -3
- package/lib/components/VSlider/slider.mjs +3 -3
- package/lib/components/VSlider/slider.mjs.map +1 -1
- package/lib/components/VSystemBar/VSystemBar.mjs +2 -2
- package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
- package/lib/components/VTabs/VTab.mjs +4 -5
- package/lib/components/VTabs/VTab.mjs.map +1 -1
- package/lib/components/VTextarea/VTextarea.mjs +6 -3
- package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
- package/lib/components/VTimeline/VTimelineItem.mjs +2 -2
- package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
- package/lib/components/VToolbar/VToolbar.mjs +2 -2
- package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
- package/lib/components/VVirtualScroll/VVirtualScroll.mjs +3 -3
- package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
- package/lib/components/VWindow/VWindow.mjs +3 -3
- package/lib/components/VWindow/VWindow.mjs.map +1 -1
- package/lib/components/VWindow/VWindowItem.mjs +3 -3
- package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
- package/lib/components/index.d.ts +63 -63
- package/lib/composables/display.mjs +3 -3
- package/lib/composables/display.mjs.map +1 -1
- package/lib/composables/form.mjs +4 -4
- package/lib/composables/form.mjs.map +1 -1
- package/lib/composables/hydration.mjs +6 -6
- package/lib/composables/hydration.mjs.map +1 -1
- package/lib/composables/intersectionObserver.mjs +2 -2
- package/lib/composables/intersectionObserver.mjs.map +1 -1
- package/lib/composables/layout.mjs +3 -3
- package/lib/composables/layout.mjs.map +1 -1
- package/lib/composables/lazy.mjs +2 -2
- package/lib/composables/lazy.mjs.map +1 -1
- package/lib/composables/nested/nested.mjs +5 -4
- package/lib/composables/nested/nested.mjs.map +1 -1
- package/lib/composables/scroll.mjs +6 -6
- package/lib/composables/scroll.mjs.map +1 -1
- package/lib/composables/ssrBoot.mjs +2 -2
- package/lib/composables/ssrBoot.mjs.map +1 -1
- package/lib/composables/stack.mjs +5 -4
- package/lib/composables/stack.mjs.map +1 -1
- package/lib/composables/transition.mjs +5 -2
- package/lib/composables/transition.mjs.map +1 -1
- package/lib/composables/validation.mjs +3 -3
- package/lib/composables/validation.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.ts +12 -5
- package/lib/labs/VDataTable/VDataTable.mjs +2 -1
- package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableServer.mjs +2 -1
- package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs +6 -6
- package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/virtual.mjs +3 -3
- package/lib/labs/VDataTable/composables/virtual.mjs.map +1 -1
- package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
- package/lib/labs/VSkeletonLoader/index.d.ts +9 -9
- package/lib/labs/components.d.ts +9 -9
- package/lib/locale/adapters/vuetify.mjs +8 -5
- package/lib/locale/adapters/vuetify.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -175,7 +175,7 @@ interface InternalItem<T = any> {
|
|
|
175
175
|
|
|
176
176
|
type Primitive = string | number | boolean | symbol;
|
|
177
177
|
type Val<T, ReturnObject extends boolean> = T extends Primitive ? T : (ReturnObject extends true ? T : any);
|
|
178
|
-
type Value<T, ReturnObject extends boolean, Multiple extends boolean> = Multiple extends true ? readonly Val<T, ReturnObject>[] : Val<T, ReturnObject
|
|
178
|
+
type Value<T, ReturnObject extends boolean, Multiple extends boolean> = Multiple extends true ? readonly Val<T, ReturnObject>[] : Val<T, ReturnObject> | null;
|
|
179
179
|
declare const VSelect: {
|
|
180
180
|
new (...args: any[]): {
|
|
181
181
|
$: vue.ComponentInternalInstance;
|
|
@@ -1421,31 +1421,31 @@ declare const VSelect: {
|
|
|
1421
1421
|
hideSelected: boolean;
|
|
1422
1422
|
menuIcon: IconValue;
|
|
1423
1423
|
openOnClear: boolean;
|
|
1424
|
-
}, {}, string> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new <T_1, ReturnObject extends boolean = false, Multiple extends boolean = false, V extends Value<
|
|
1425
|
-
items?:
|
|
1424
|
+
}, {}, string> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new <T_1 extends readonly any[], Item = T_1 extends (infer U)[] ? U : never, ReturnObject extends boolean = false, Multiple extends boolean = false, V extends Value<Item, ReturnObject, Multiple> = Value<Item, ReturnObject, Multiple>>(props: {
|
|
1425
|
+
items?: T_1 | undefined;
|
|
1426
1426
|
returnObject?: ReturnObject | undefined;
|
|
1427
1427
|
multiple?: Multiple | undefined;
|
|
1428
|
-
modelValue?: V | undefined;
|
|
1428
|
+
modelValue?: V | null | undefined;
|
|
1429
1429
|
'onUpdate:modelValue'?: ((val: V) => void) | undefined;
|
|
1430
1430
|
}) => GenericProps<{
|
|
1431
|
-
items?:
|
|
1431
|
+
items?: T_1 | undefined;
|
|
1432
1432
|
returnObject?: ReturnObject | undefined;
|
|
1433
1433
|
multiple?: Multiple | undefined;
|
|
1434
|
-
modelValue?: V | undefined;
|
|
1434
|
+
modelValue?: V | null | undefined;
|
|
1435
1435
|
'onUpdate:modelValue'?: ((val: V) => void) | undefined;
|
|
1436
1436
|
}, Omit<VInputSlots & VFieldSlots, "default"> & {
|
|
1437
1437
|
item: [{
|
|
1438
|
-
item: InternalItem<
|
|
1438
|
+
item: InternalItem<Item>;
|
|
1439
1439
|
index: number;
|
|
1440
1440
|
props: Record<string, unknown>;
|
|
1441
1441
|
}];
|
|
1442
1442
|
chip: [{
|
|
1443
|
-
item: InternalItem<
|
|
1443
|
+
item: InternalItem<Item>;
|
|
1444
1444
|
index: number;
|
|
1445
1445
|
props: Record<string, unknown>;
|
|
1446
1446
|
}];
|
|
1447
1447
|
selection: [{
|
|
1448
|
-
item: InternalItem<
|
|
1448
|
+
item: InternalItem<Item>;
|
|
1449
1449
|
index: number;
|
|
1450
1450
|
}];
|
|
1451
1451
|
'prepend-item': [];
|
|
@@ -11,7 +11,7 @@ import { Ripple } from "../../directives/ripple/index.mjs"; // Composables
|
|
|
11
11
|
import { useDensity } from "../../composables/density.mjs";
|
|
12
12
|
import { useProxiedModel } from "../../composables/proxiedModel.mjs";
|
|
13
13
|
import { useTextColor } from "../../composables/color.mjs"; // Utilities
|
|
14
|
-
import { computed, inject, nextTick, ref } from 'vue';
|
|
14
|
+
import { computed, inject, nextTick, ref, shallowRef } from 'vue';
|
|
15
15
|
import { filterInputAttrs, genericComponent, getUid, propsFactory, SUPPORTS_FOCUS_VISIBLE, useRender, wrapInArray } from "../../util/index.mjs"; // Types
|
|
16
16
|
export const makeSelectionControlProps = propsFactory({
|
|
17
17
|
label: String,
|
|
@@ -93,8 +93,8 @@ export const VSelectionControl = genericComponent()({
|
|
|
93
93
|
} = useSelectionControl(props);
|
|
94
94
|
const uid = getUid();
|
|
95
95
|
const id = computed(() => props.id || `input-${uid}`);
|
|
96
|
-
const isFocused =
|
|
97
|
-
const isFocusVisible =
|
|
96
|
+
const isFocused = shallowRef(false);
|
|
97
|
+
const isFocusVisible = shallowRef(false);
|
|
98
98
|
const input = ref();
|
|
99
99
|
group?.onForceUpdate(() => {
|
|
100
100
|
if (input.value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VSelectionControl.mjs","names":["VIcon","VLabel","makeComponentProps","makeSelectionControlGroupProps","VSelectionControlGroupSymbol","Ripple","useDensity","useProxiedModel","useTextColor","computed","inject","nextTick","ref","filterInputAttrs","genericComponent","getUid","propsFactory","SUPPORTS_FOCUS_VISIBLE","useRender","wrapInArray","makeSelectionControlProps","label","String","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","icon","trueIcon","falseIcon","VSelectionControl","name","directives","inheritAttrs","emits","setup","_ref","attrs","slots","uid","id","isFocused","isFocusVisible","input","onForceUpdate","checked","onFocus","e","target","matches","onBlur","onInput","forceUpdate","for","rootAttrs","inputAttrs","_createVNode","_mergeProps","inline","class","style","default","_withDirectives","type","_resolveDirective","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 { makeComponentProps } from '@/composables/component'\nimport { makeSelectionControlGroupProps, VSelectionControlGroupSymbol } from '@/components/VSelectionControlGroup/VSelectionControlGroup'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Composables\nimport { useDensity } from '@/composables/density'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, inject, nextTick, ref } from 'vue'\nimport {\n filterInputAttrs,\n genericComponent,\n getUid,\n propsFactory,\n SUPPORTS_FOCUS_VISIBLE,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { CSSProperties, ExtractPropTypes, Ref, WritableComputedRef } from 'vue'\nimport type { GenericProps } from '@/util'\n\nexport type SelectionControlSlot = {\n model: WritableComputedRef<any>\n textColorClasses: Ref<string[]>\n textColorStyles: Ref<CSSProperties>\n props: {\n onBlur: (e: Event) => void\n onFocus: (e: FocusEvent) => void\n id: string\n }\n}\n\nexport type VSelectionControlSlots = {\n default: []\n label: [{ label: string | undefined, props: Record<string, unknown> }]\n input: [SelectionControlSlot]\n}\n\nexport const makeSelectionControlProps = propsFactory({\n label: String,\n trueValue: null,\n falseValue: null,\n value: null,\n\n ...makeComponentProps(),\n ...makeSelectionControlGroupProps(),\n}, 'v-selection-control')\n\nexport function useSelectionControl (\n props: ExtractPropTypes<ReturnType<typeof makeSelectionControlProps>> & {\n 'onUpdate:modelValue': ((val: any) => void) | 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 ? 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(computed(() => {\n return (\n model.value &&\n !props.error &&\n !props.disabled\n ) ? props.color : undefined\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 icon,\n }\n}\n\nexport const VSelectionControl = genericComponent<new <T>(props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (val: T) => any\n}) => GenericProps<typeof props, VSelectionControlSlots>>()({\n name: 'VSelectionControl',\n\n directives: { Ripple },\n\n inheritAttrs: false,\n\n props: makeSelectionControlProps(),\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const {\n group,\n densityClasses,\n icon,\n model,\n textColorClasses,\n textColorStyles,\n trueValue,\n } = useSelectionControl(props)\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n const isFocused = ref(false)\n const isFocusVisible = ref(false)\n const input = ref<HTMLInputElement>()\n\n group?.onForceUpdate(() => {\n if (input.value) {\n input.value.checked = model.value\n }\n })\n\n function onFocus (e: FocusEvent) {\n isFocused.value = true\n if (\n !SUPPORTS_FOCUS_VISIBLE ||\n (SUPPORTS_FOCUS_VISIBLE && (e.target as HTMLElement).matches(':focus-visible'))\n ) {\n isFocusVisible.value = true\n }\n }\n\n function onBlur () {\n isFocused.value = false\n isFocusVisible.value = false\n }\n\n function onInput (e: Event) {\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 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\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 { icon.value && <VIcon key=\"icon\" icon={ icon.value } /> }\n\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.readonly }\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 { slots.input?.({\n model,\n textColorClasses,\n textColorStyles,\n props: {\n onFocus,\n onBlur,\n id: id.value,\n },\n } as SelectionControlSlot)}\n </div>\n </div>\n\n { label && (\n <VLabel for={ id.value } clickable>\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":";AAAA;AACA;;AAEA;AAAA,SACSA,KAAK;AAAA,SACLC,MAAM;AAAA,SACNC,kBAAkB;AAAA,SAClBC,8BAA8B,EAAEC,4BAA4B,gEAErE;AAAA,SACSC,MAAM,6CAEf;AAAA,SACSC,UAAU;AAAA,SACVC,eAAe;AAAA,SACfC,YAAY,uCAErB;AACA,SAASC,QAAQ,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,GAAG,QAAQ,KAAK;AAAA,SAEnDC,gBAAgB,EAChBC,gBAAgB,EAChBC,MAAM,EACNC,YAAY,EACZC,sBAAsB,EACtBC,SAAS,EACTC,WAAW,gCAGb;AAqBA,OAAO,MAAMC,yBAAyB,GAAGJ,YAAY,CAAC;EACpDK,KAAK,EAAEC,MAAM;EACbC,SAAS,EAAE,IAAI;EACfC,UAAU,EAAE,IAAI;EAChBC,KAAK,EAAE,IAAI;EAEX,GAAGvB,kBAAkB,EAAE;EACvB,GAAGC,8BAA8B;AACnC,CAAC,EAAE,qBAAqB,CAAC;AAEzB,OAAO,SAASuB,mBAAmBA,CACjCC,KAEC,EACD;EACA,MAAMC,KAAK,GAAGlB,MAAM,CAACN,4BAA4B,EAAEyB,SAAS,CAAC;EAC7D,MAAM;IAAEC;EAAe,CAAC,GAAGxB,UAAU,CAACqB,KAAK,CAAC;EAC5C,MAAMI,UAAU,GAAGxB,eAAe,CAACoB,KAAK,EAAE,YAAY,CAAC;EACvD,MAAMJ,SAAS,GAAGd,QAAQ,CAAC,MACzBkB,KAAK,CAACJ,SAAS,KAAKM,SAAS,GAAGF,KAAK,CAACJ,SAAS,GAC7CI,KAAK,CAACF,KAAK,KAAKI,SAAS,GAAGF,KAAK,CAACF,KAAK,GACvC,IACH,CAAC;EACF,MAAMD,UAAU,GAAGf,QAAQ,CAAC,MAAMkB,KAAK,CAACH,UAAU,KAAKK,SAAS,GAAGF,KAAK,CAACH,UAAU,GAAG,KAAK,CAAC;EAC5F,MAAMQ,UAAU,GAAGvB,QAAQ,CAAC,MAC1B,CAAC,CAACkB,KAAK,CAACM,QAAQ,IACfN,KAAK,CAACM,QAAQ,IAAI,IAAI,IAAIC,KAAK,CAACC,OAAO,CAACJ,UAAU,CAACN,KAAK,CAC1D,CAAC;EACF,MAAMW,KAAK,GAAG3B,QAAQ,CAAC;IACrB4B,GAAGA,CAAA,EAAI;MACL,MAAMC,GAAG,GAAGV,KAAK,GAAGA,KAAK,CAACG,UAAU,CAACN,KAAK,GAAGM,UAAU,CAACN,KAAK;MAE7D,OAAOO,UAAU,CAACP,KAAK,GACnBa,GAAG,CAACC,IAAI,CAAEC,CAAM,IAAKb,KAAK,CAACc,eAAe,CAACD,CAAC,EAAEjB,SAAS,CAACE,KAAK,CAAC,CAAC,GAC/DE,KAAK,CAACc,eAAe,CAACH,GAAG,EAAEf,SAAS,CAACE,KAAK,CAAC;IACjD,CAAC;IACDiB,GAAGA,CAAEJ,GAAY,EAAE;MACjB,IAAIX,KAAK,CAACgB,QAAQ,EAAE;MAEpB,MAAMC,YAAY,GAAGN,GAAG,GAAGf,SAAS,CAACE,KAAK,GAAGD,UAAU,CAACC,KAAK;MAE7D,IAAIoB,MAAM,GAAGD,YAAY;MAEzB,IAAIZ,UAAU,CAACP,KAAK,EAAE;QACpBoB,MAAM,GAAGP,GAAG,GACR,CAAC,GAAGnB,WAAW,CAACY,UAAU,CAACN,KAAK,CAAC,EAAEmB,YAAY,CAAC,GAChDzB,WAAW,CAACY,UAAU,CAACN,KAAK,CAAC,CAACqB,MAAM,CAAEC,IAAS,IAAK,CAACpB,KAAK,CAACc,eAAe,CAACM,IAAI,EAAExB,SAAS,CAACE,KAAK,CAAC,CAAC;MACxG;MAEA,IAAIG,KAAK,EAAE;QACTA,KAAK,CAACG,UAAU,CAACN,KAAK,GAAGoB,MAAM;MACjC,CAAC,MAAM;QACLd,UAAU,CAACN,KAAK,GAAGoB,MAAM;MAC3B;IACF;EACF,CAAC,CAAC;EACF,MAAM;IAAEG,gBAAgB;IAAEC;EAAgB,CAAC,GAAGzC,YAAY,CAACC,QAAQ,CAAC,MAAM;IACxE,OACE2B,KAAK,CAACX,KAAK,IACX,CAACE,KAAK,CAACuB,KAAK,IACZ,CAACvB,KAAK,CAACwB,QAAQ,GACbxB,KAAK,CAACyB,KAAK,GAAGvB,SAAS;EAC7B,CAAC,CAAC,CAAC;EACH,MAAMwB,IAAI,GAAG5C,QAAQ,CAAC,MAAM2B,KAAK,CAACX,KAAK,GAAGE,KAAK,CAAC2B,QAAQ,GAAG3B,KAAK,CAAC4B,SAAS,CAAC;EAE3E,OAAO;IACL3B,KAAK;IACLE,cAAc;IACdP,SAAS;IACTC,UAAU;IACVY,KAAK;IACLY,gBAAgB;IAChBC,eAAe;IACfI;EACF,CAAC;AACH;AAEA,OAAO,MAAMG,iBAAiB,GAAG1C,gBAAgB,EAGU,CAAC;EAC1D2C,IAAI,EAAE,mBAAmB;EAEzBC,UAAU,EAAE;IAAErD;EAAO,CAAC;EAEtBsD,YAAY,EAAE,KAAK;EAEnBhC,KAAK,EAAEP,yBAAyB,EAAE;EAElCwC,KAAK,EAAE;IACL,mBAAmB,EAAGtB,GAAQ,IAAK;EACrC,CAAC;EAEDuB,KAAKA,CAAElC,KAAK,EAAAmC,IAAA,EAAoB;IAAA,IAAlB;MAAEC,KAAK;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC5B,MAAM;MACJlC,KAAK;MACLE,cAAc;MACduB,IAAI;MACJjB,KAAK;MACLY,gBAAgB;MAChBC,eAAe;MACf1B;IACF,CAAC,GAAGG,mBAAmB,CAACC,KAAK,CAAC;IAC9B,MAAMsC,GAAG,GAAGlD,MAAM,EAAE;IACpB,MAAMmD,EAAE,GAAGzD,QAAQ,CAAC,MAAMkB,KAAK,CAACuC,EAAE,IAAK,SAAQD,GAAI,EAAC,CAAC;IACrD,MAAME,SAAS,GAAGvD,GAAG,CAAC,KAAK,CAAC;IAC5B,MAAMwD,cAAc,GAAGxD,GAAG,CAAC,KAAK,CAAC;IACjC,MAAMyD,KAAK,GAAGzD,GAAG,EAAoB;IAErCgB,KAAK,EAAE0C,aAAa,CAAC,MAAM;MACzB,IAAID,KAAK,CAAC5C,KAAK,EAAE;QACf4C,KAAK,CAAC5C,KAAK,CAAC8C,OAAO,GAAGnC,KAAK,CAACX,KAAK;MACnC;IACF,CAAC,CAAC;IAEF,SAAS+C,OAAOA,CAAEC,CAAa,EAAE;MAC/BN,SAAS,CAAC1C,KAAK,GAAG,IAAI;MACtB,IACE,CAACR,sBAAsB,IACtBA,sBAAsB,IAAKwD,CAAC,CAACC,MAAM,CAAiBC,OAAO,CAAC,gBAAgB,CAAE,EAC/E;QACAP,cAAc,CAAC3C,KAAK,GAAG,IAAI;MAC7B;IACF;IAEA,SAASmD,MAAMA,CAAA,EAAI;MACjBT,SAAS,CAAC1C,KAAK,GAAG,KAAK;MACvB2C,cAAc,CAAC3C,KAAK,GAAG,KAAK;IAC9B;IAEA,SAASoD,OAAOA,CAAEJ,CAAQ,EAAE;MAC1B,IAAI9C,KAAK,CAACgB,QAAQ,IAAIf,KAAK,EAAE;QAC3BjB,QAAQ,CAAC,MAAMiB,KAAK,CAACkD,WAAW,EAAE,CAAC;MACrC;MACA1C,KAAK,CAACX,KAAK,GAAIgD,CAAC,CAACC,MAAM,CAAsBH,OAAO;IACtD;IAEArD,SAAS,CAAC,MAAM;MACd,MAAMG,KAAK,GAAG2C,KAAK,CAAC3C,KAAK,GACrB2C,KAAK,CAAC3C,KAAK,CAAC;QACZA,KAAK,EAAEM,KAAK,CAACN,KAAK;QAClBM,KAAK,EAAE;UAAEoD,GAAG,EAAEb,EAAE,CAACzC;QAAM;MACzB,CAAC,CAAC,GACAE,KAAK,CAACN,KAAK;MACf,MAAM,CAAC2D,SAAS,EAAEC,UAAU,CAAC,GAAGpE,gBAAgB,CAACkD,KAAK,CAAC;MAEvD,OAAAmB,YAAA,QAAAC,WAAA;QAAA,SAEW,CACL,qBAAqB,EACrB;UACE,4BAA4B,EAAE/C,KAAK,CAACX,KAAK;UACzC,+BAA+B,EAAEE,KAAK,CAACwB,QAAQ;UAC/C,4BAA4B,EAAExB,KAAK,CAACuB,KAAK;UACzC,8BAA8B,EAAEiB,SAAS,CAAC1C,KAAK;UAC/C,oCAAoC,EAAE2C,cAAc,CAAC3C,KAAK;UAC1D,6BAA6B,EAAEE,KAAK,CAACyD;QACvC,CAAC,EACDtD,cAAc,CAACL,KAAK,EACpBE,KAAK,CAAC0D,KAAK;MACZ,GACIL,SAAS;QAAA,SACNrD,KAAK,CAAC2D;MAAK,KAAAJ,YAAA;QAAA,SAGV,CACL,8BAA8B,EAC9BlC,gBAAgB,CAACvB,KAAK,CACvB;QAAA,SACOwB,eAAe,CAACxB;MAAK,IAE3BuC,KAAK,CAACuB,OAAO,IAAI,EAAAC,eAAA,CAAAN,YAAA;QAAA,SAGV,CACL,4BAA4B;MAC7B,IAOC7B,IAAI,CAAC5B,KAAK,IAAAyD,YAAA,CAAAlF,KAAA;QAAA,OAAe,MAAM;QAAA,QAAQqD,IAAI,CAAC5B;MAAK,QAAK,EAAAyD,YAAA,UAAAC,WAAA;QAAA,OAGhDd,KAAK;QAAA,WACDjC,KAAK,CAACX,KAAK;QAAA,YACVE,KAAK,CAACwB,QAAQ;QAAA,MACpBe,EAAE,CAACzC,KAAK;QAAA,UACJmD,MAAM;QAAA,WACLJ,OAAO;QAAA,WACPK,OAAO;QAAA,iBACDlD,KAAK,CAACgB,QAAQ;QAAA,QACvBhB,KAAK,CAAC8D,IAAI;QAAA,SACTlE,SAAS,CAACE,KAAK;QAAA,QAChBE,KAAK,CAAC8B,IAAI;QAAA,gBACF9B,KAAK,CAAC8D,IAAI,KAAK,UAAU,GAAGrD,KAAK,CAACX,KAAK,GAAGI;MAAS,GAC7DoD,UAAU,UAGfjB,KAAK,CAACK,KAAK,GAAG;QACdjC,KAAK;QACLY,gBAAgB;QAChBC,eAAe;QACftB,KAAK,EAAE;UACL6C,OAAO;UACPI,MAAM;UACNV,EAAE,EAAEA,EAAE,CAACzC;QACT;MACF,CAAC,CAAyB,MAAAiE,iBAAA,YAjCf/D,KAAK,CAACgE,MAAM,IAAI,CACzB,CAAChE,KAAK,CAACwB,QAAQ,IAAI,CAACxB,KAAK,CAACgB,QAAQ,EAClC,IAAI,EACJ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CACrB,OAiCHtB,KAAK,IAAA6D,YAAA,CAAAjF,MAAA;QAAA,OACSiE,EAAE,CAACzC,KAAK;QAAA;MAAA;QAAA8D,OAAA,EAAAA,CAAA,MAClBlE,KAAK;MAAA,EAEV;IAGP,CAAC,CAAC;IAEF,OAAO;MACL8C,SAAS;MACTE;IACF,CAAC;EACH;AACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"VSelectionControl.mjs","names":["VIcon","VLabel","makeComponentProps","makeSelectionControlGroupProps","VSelectionControlGroupSymbol","Ripple","useDensity","useProxiedModel","useTextColor","computed","inject","nextTick","ref","shallowRef","filterInputAttrs","genericComponent","getUid","propsFactory","SUPPORTS_FOCUS_VISIBLE","useRender","wrapInArray","makeSelectionControlProps","label","String","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","icon","trueIcon","falseIcon","VSelectionControl","name","directives","inheritAttrs","emits","setup","_ref","attrs","slots","uid","id","isFocused","isFocusVisible","input","onForceUpdate","checked","onFocus","e","target","matches","onBlur","onInput","forceUpdate","for","rootAttrs","inputAttrs","_createVNode","_mergeProps","inline","class","style","default","_withDirectives","type","_resolveDirective","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 { makeComponentProps } from '@/composables/component'\nimport { makeSelectionControlGroupProps, VSelectionControlGroupSymbol } from '@/components/VSelectionControlGroup/VSelectionControlGroup'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Composables\nimport { useDensity } from '@/composables/density'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, inject, nextTick, ref, shallowRef } from 'vue'\nimport {\n filterInputAttrs,\n genericComponent,\n getUid,\n propsFactory,\n SUPPORTS_FOCUS_VISIBLE,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { CSSProperties, ExtractPropTypes, Ref, WritableComputedRef } from 'vue'\nimport type { GenericProps } from '@/util'\n\nexport type SelectionControlSlot = {\n model: WritableComputedRef<any>\n textColorClasses: Ref<string[]>\n textColorStyles: Ref<CSSProperties>\n props: {\n onBlur: (e: Event) => void\n onFocus: (e: FocusEvent) => void\n id: string\n }\n}\n\nexport type VSelectionControlSlots = {\n default: []\n label: [{ label: string | undefined, props: Record<string, unknown> }]\n input: [SelectionControlSlot]\n}\n\nexport const makeSelectionControlProps = propsFactory({\n label: String,\n trueValue: null,\n falseValue: null,\n value: null,\n\n ...makeComponentProps(),\n ...makeSelectionControlGroupProps(),\n}, 'v-selection-control')\n\nexport function useSelectionControl (\n props: ExtractPropTypes<ReturnType<typeof makeSelectionControlProps>> & {\n 'onUpdate:modelValue': ((val: any) => void) | 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 ? 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(computed(() => {\n return (\n model.value &&\n !props.error &&\n !props.disabled\n ) ? props.color : undefined\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 icon,\n }\n}\n\nexport const VSelectionControl = genericComponent<new <T>(props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (val: T) => any\n}) => GenericProps<typeof props, VSelectionControlSlots>>()({\n name: 'VSelectionControl',\n\n directives: { Ripple },\n\n inheritAttrs: false,\n\n props: makeSelectionControlProps(),\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const {\n group,\n densityClasses,\n icon,\n model,\n textColorClasses,\n textColorStyles,\n trueValue,\n } = useSelectionControl(props)\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n const isFocused = shallowRef(false)\n const isFocusVisible = shallowRef(false)\n const input = ref<HTMLInputElement>()\n\n group?.onForceUpdate(() => {\n if (input.value) {\n input.value.checked = model.value\n }\n })\n\n function onFocus (e: FocusEvent) {\n isFocused.value = true\n if (\n !SUPPORTS_FOCUS_VISIBLE ||\n (SUPPORTS_FOCUS_VISIBLE && (e.target as HTMLElement).matches(':focus-visible'))\n ) {\n isFocusVisible.value = true\n }\n }\n\n function onBlur () {\n isFocused.value = false\n isFocusVisible.value = false\n }\n\n function onInput (e: Event) {\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 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\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 { icon.value && <VIcon key=\"icon\" icon={ icon.value } /> }\n\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.readonly }\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 { slots.input?.({\n model,\n textColorClasses,\n textColorStyles,\n props: {\n onFocus,\n onBlur,\n id: id.value,\n },\n } as SelectionControlSlot)}\n </div>\n </div>\n\n { label && (\n <VLabel for={ id.value } clickable>\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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"}
|
|
@@ -159,7 +159,7 @@ declare const VSelectionControl: {
|
|
|
159
159
|
falseValue: null;
|
|
160
160
|
value: null;
|
|
161
161
|
}, "$children" | "v-slot:default" | "v-slots" | "modelValue" | "onUpdate:modelValue" | "v-slot:label" | "v-slot:input">>>, {
|
|
162
|
-
isFocused:
|
|
162
|
+
isFocused: vue.ShallowRef<boolean>;
|
|
163
163
|
input: Ref<HTMLInputElement | undefined>;
|
|
164
164
|
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Omit<{
|
|
165
165
|
'update:modelValue': (val: any) => boolean;
|
|
@@ -234,7 +234,7 @@ declare const VSelectionControl: {
|
|
|
234
234
|
falseValue: null;
|
|
235
235
|
value: null;
|
|
236
236
|
}, "$children" | "v-slot:default" | "v-slots" | "modelValue" | "onUpdate:modelValue" | "v-slot:label" | "v-slot:input">>> & vue.ShallowUnwrapRef<{
|
|
237
|
-
isFocused:
|
|
237
|
+
isFocused: vue.ShallowRef<boolean>;
|
|
238
238
|
input: Ref<HTMLInputElement | undefined>;
|
|
239
239
|
}> & {} & vue.ComponentCustomProperties & {};
|
|
240
240
|
__isFragment?: undefined;
|
|
@@ -281,7 +281,7 @@ declare const VSelectionControl: {
|
|
|
281
281
|
falseValue: null;
|
|
282
282
|
value: null;
|
|
283
283
|
}, "$children" | "v-slot:default" | "v-slots" | "modelValue" | "onUpdate:modelValue" | "v-slot:label" | "v-slot:input">>>, {
|
|
284
|
-
isFocused:
|
|
284
|
+
isFocused: vue.ShallowRef<boolean>;
|
|
285
285
|
input: Ref<HTMLInputElement | undefined>;
|
|
286
286
|
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Omit<{
|
|
287
287
|
'update:modelValue': (val: any) => boolean;
|
|
@@ -12,7 +12,7 @@ import { makeTagProps } from "../../composables/tag.mjs";
|
|
|
12
12
|
import { useDisplay } from "../../composables/index.mjs";
|
|
13
13
|
import { useResizeObserver } from "../../composables/resizeObserver.mjs";
|
|
14
14
|
import { useRtl } from "../../composables/locale.mjs"; // Utilities
|
|
15
|
-
import { computed,
|
|
15
|
+
import { computed, shallowRef, watch } from 'vue';
|
|
16
16
|
import { clamp, focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from "../../util/index.mjs";
|
|
17
17
|
import { bias, calculateCenteredOffset, calculateUpdatedOffset } from "./helpers.mjs"; // Types
|
|
18
18
|
export const VSlideGroupSymbol = Symbol.for('vuetify:v-slide-group');
|
|
@@ -61,10 +61,10 @@ export const VSlideGroup = genericComponent()({
|
|
|
61
61
|
mobile
|
|
62
62
|
} = useDisplay();
|
|
63
63
|
const group = useGroup(props, props.symbol);
|
|
64
|
-
const isOverflowing =
|
|
65
|
-
const scrollOffset =
|
|
66
|
-
const containerSize =
|
|
67
|
-
const contentSize =
|
|
64
|
+
const isOverflowing = shallowRef(false);
|
|
65
|
+
const scrollOffset = shallowRef(0);
|
|
66
|
+
const containerSize = shallowRef(0);
|
|
67
|
+
const contentSize = shallowRef(0);
|
|
68
68
|
const isHorizontal = computed(() => props.direction === 'horizontal');
|
|
69
69
|
const {
|
|
70
70
|
resizeRef: containerRef,
|
|
@@ -120,7 +120,7 @@ export const VSlideGroup = genericComponent()({
|
|
|
120
120
|
});
|
|
121
121
|
});
|
|
122
122
|
}
|
|
123
|
-
const disableTransition =
|
|
123
|
+
const disableTransition = shallowRef(false);
|
|
124
124
|
let startTouch = 0;
|
|
125
125
|
let startOffset = 0;
|
|
126
126
|
function onTouchstart(e) {
|
|
@@ -149,7 +149,7 @@ export const VSlideGroup = genericComponent()({
|
|
|
149
149
|
if (!containerRef.value) return;
|
|
150
150
|
containerRef.value[isHorizontal.value ? 'scrollLeft' : 'scrollTop'] = 0;
|
|
151
151
|
}
|
|
152
|
-
const isFocused =
|
|
152
|
+
const isFocused = shallowRef(false);
|
|
153
153
|
function onFocusin(e) {
|
|
154
154
|
isFocused.value = true;
|
|
155
155
|
if (!isOverflowing.value || !contentRef.value) return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VSlideGroup.mjs","names":["VFadeTransition","VIcon","IconValue","makeComponentProps","makeGroupProps","useGroup","makeTagProps","useDisplay","useResizeObserver","useRtl","computed","ref","watch","clamp","focusableChildren","genericComponent","IN_BROWSER","propsFactory","useRender","bias","calculateCenteredOffset","calculateUpdatedOffset","VSlideGroupSymbol","Symbol","for","makeVSlideGroupProps","centerActive","Boolean","direction","type","String","default","symbol","nextIcon","prevIcon","showArrows","validator","v","includes","selectedClass","VSlideGroup","name","props","emits","value","setup","_ref","slots","isRtl","mobile","group","isOverflowing","scrollOffset","containerSize","contentSize","isHorizontal","resizeRef","containerRef","contentRect","containerRect","contentRef","firstSelectedIndex","selected","length","items","findIndex","item","id","lastSelectedIndex","frame","cancelAnimationFrame","requestAnimationFrame","sizeProperty","selectedElement","children","currentScrollOffset","disableTransition","startTouch","startOffset","onTouchstart","e","sign","touches","onTouchmove","onTouchend","maxScrollOffset","onScroll","isFocused","onFocusin","el","composedPath","onFocusout","onFocus","relatedTarget","contains","focus","onKeydown","key","location","focusable","querySelector","nextElementSibling","previousElementSibling","firstElementChild","lastElementChild","scrollTo","newAbsoluteOffset","contentStyles","scrollAmount","transform","transition","willChange","slotProps","next","prev","select","isSelected","hasAffixes","Math","abs","hasPrev","hasNext","_createVNode","tag","class","style","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 { IconValue } from '@/composables/icons'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { makeTagProps } from '@/composables/tag'\nimport { useDisplay } from '@/composables'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { useRtl } from '@/composables/locale'\n\n// Utilities\nimport { computed, ref, watch } from 'vue'\nimport { clamp, focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from '@/util'\nimport { bias, calculateCenteredOffset, calculateUpdatedOffset } from './helpers'\n\n// Types\nimport type { GroupProvide } from '@/composables/group'\nimport type { InjectionKey, PropType } from 'vue'\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\ntype VSlideGroupSlots = {\n default: [SlideGroupSlot]\n prev: [SlideGroupSlot]\n next: [SlideGroupSlot]\n}\n\nexport const makeVSlideGroupProps = propsFactory({\n centerActive: Boolean,\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 ...makeTagProps(),\n ...makeGroupProps({\n selectedClass: 'v-slide-group-item--active',\n }),\n}, 'v-slide-group')\n\nexport const VSlideGroup = genericComponent<VSlideGroupSlots>()({\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 { mobile } = useDisplay()\n const group = useGroup(props, props.symbol)\n const isOverflowing = ref(false)\n const scrollOffset = ref(0)\n const containerSize = ref(0)\n const contentSize = ref(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 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 (firstSelectedIndex.value >= 0 && contentRef.value) {\n // TODO: Is this too naive? Should we store element references in group composable?\n const selectedElement = contentRef.value.children[lastSelectedIndex.value] as HTMLElement\n\n if (firstSelectedIndex.value === 0 || !isOverflowing.value) {\n scrollOffset.value = 0\n } else if (props.centerActive) {\n scrollOffset.value = calculateCenteredOffset({\n selectedElement,\n containerSize: containerSize.value,\n contentSize: contentSize.value,\n isRtl: isRtl.value,\n isHorizontal: isHorizontal.value,\n })\n } else if (isOverflowing.value) {\n scrollOffset.value = calculateUpdatedOffset({\n selectedElement,\n containerSize: containerSize.value,\n contentSize: contentSize.value,\n isRtl: isRtl.value,\n currentScrollOffset: scrollOffset.value,\n isHorizontal: isHorizontal.value,\n })\n }\n }\n })\n })\n }\n\n const disableTransition = ref(false)\n\n let startTouch = 0\n let startOffset = 0\n\n function onTouchstart (e: TouchEvent) {\n const sizeProperty = isHorizontal.value ? 'clientX' : 'clientY'\n const sign = isRtl.value && isHorizontal.value ? -1 : 1\n startOffset = sign * scrollOffset.value\n startTouch = e.touches[0][sizeProperty]\n disableTransition.value = true\n }\n\n function onTouchmove (e: TouchEvent) {\n if (!isOverflowing.value) return\n\n const sizeProperty = isHorizontal.value ? 'clientX' : 'clientY'\n const sign = isRtl.value && isHorizontal.value ? -1 : 1\n scrollOffset.value = sign * (startOffset + startTouch - e.touches[0][sizeProperty])\n }\n\n function onTouchend (e: TouchEvent) {\n const maxScrollOffset = contentSize.value - containerSize.value\n\n if (scrollOffset.value < 0 || !isOverflowing.value) {\n scrollOffset.value = 0\n } else if (scrollOffset.value >= maxScrollOffset) {\n scrollOffset.value = maxScrollOffset\n }\n\n disableTransition.value = false\n }\n\n function onScroll () {\n if (!containerRef.value) return\n\n containerRef.value[isHorizontal.value ? 'scrollLeft' : 'scrollTop'] = 0\n }\n\n const isFocused = ref(false)\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n\n if (!isOverflowing.value || !contentRef.value) 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.value.children) {\n if (item === el) {\n scrollOffset.value = calculateUpdatedOffset({\n selectedElement: item as HTMLElement,\n containerSize: containerSize.value,\n contentSize: contentSize.value,\n isRtl: isRtl.value,\n currentScrollOffset: scrollOffset.value,\n isHorizontal: isHorizontal.value,\n })\n return\n }\n }\n }\n }\n\n function onFocusout (e: FocusEvent) {\n isFocused.value = false\n }\n\n function onFocus (e: FocusEvent) {\n if (\n !isFocused.value &&\n !(e.relatedTarget && contentRef.value?.contains(e.relatedTarget as Node))\n ) focus()\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (!contentRef.value) return\n\n if (isHorizontal.value) {\n if (e.key === 'ArrowRight') {\n focus(isRtl.value ? 'prev' : 'next')\n } else if (e.key === 'ArrowLeft') {\n focus(isRtl.value ? 'next' : 'prev')\n }\n } else {\n if (e.key === 'ArrowDown') {\n focus('next')\n } else if (e.key === 'ArrowUp') {\n focus('prev')\n }\n }\n\n if (e.key === 'Home') {\n focus('first')\n } else if (e.key === 'End') {\n focus('last')\n }\n }\n\n function focus (location?: 'next' | 'prev' | 'first' | 'last') {\n if (!contentRef.value) return\n\n if (!location) {\n const focusable = focusableChildren(contentRef.value)\n focusable[0]?.focus()\n } else if (location === 'next') {\n const el = contentRef.value.querySelector(':focus')?.nextElementSibling as HTMLElement | undefined\n if (el) el.focus()\n else focus('first')\n } else if (location === 'prev') {\n const el = contentRef.value.querySelector(':focus')?.previousElementSibling as HTMLElement | undefined\n if (el) el.focus()\n else focus('last')\n } else if (location === 'first') {\n (contentRef.value.firstElementChild as HTMLElement)?.focus()\n } else if (location === 'last') {\n (contentRef.value.lastElementChild as HTMLElement)?.focus()\n }\n }\n\n function scrollTo (location: 'prev' | 'next') {\n const newAbsoluteOffset = scrollOffset.value + (location === 'prev' ? -1 : 1) * containerSize.value\n\n scrollOffset.value = clamp(newAbsoluteOffset, 0, contentSize.value - containerSize.value)\n }\n\n const contentStyles = computed(() => {\n // This adds friction when scrolling the 'wrong' way when at max offset\n let scrollAmount = scrollOffset.value > contentSize.value - containerSize.value\n ? -(contentSize.value - containerSize.value) + bias(contentSize.value - containerSize.value - scrollOffset.value)\n : -scrollOffset.value\n\n // This adds friction when scrolling the 'wrong' way when at min offset\n if (scrollOffset.value <= 0) {\n scrollAmount = bias(-scrollOffset.value)\n }\n\n const sign = isRtl.value && isHorizontal.value ? -1 : 1\n return {\n transform: `translate${isHorizontal.value ? 'X' : 'Y'}(${sign * scrollAmount}px)`,\n transition: disableTransition.value ? 'none' : '',\n willChange: disableTransition.value ? 'transform' : '',\n }\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 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 isOverflowing.value || Math.abs(scrollOffset.value) > 0\n\n // Always show on mobile\n case 'mobile': return (\n mobile.value ||\n (isOverflowing.value || Math.abs(scrollOffset.value) > 0)\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 (isOverflowing.value || Math.abs(scrollOffset.value) > 0)\n )\n }\n })\n\n const hasPrev = computed(() => {\n return Math.abs(scrollOffset.value) > 0\n })\n\n const hasNext = computed(() => {\n // Check one scroll ahead to know the width of right-most item\n return contentSize.value > Math.abs(scrollOffset.value) + containerSize.value\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 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 onClick={ () => 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=\"v-slide-group__container\"\n onScroll={ onScroll }\n >\n <div\n ref={ contentRef }\n class=\"v-slide-group__content\"\n style={ contentStyles.value }\n onTouchstartPassive={ onTouchstart }\n onTouchmovePassive={ onTouchmove }\n onTouchendPassive={ onTouchend }\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 onClick={ () => 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 }\n },\n})\n\nexport type VSlideGroup = InstanceType<typeof VSlideGroup>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VSlideGroup.mjs","names":["VFadeTransition","VIcon","IconValue","makeComponentProps","makeGroupProps","useGroup","makeTagProps","useDisplay","useResizeObserver","useRtl","computed","shallowRef","watch","clamp","focusableChildren","genericComponent","IN_BROWSER","propsFactory","useRender","bias","calculateCenteredOffset","calculateUpdatedOffset","VSlideGroupSymbol","Symbol","for","makeVSlideGroupProps","centerActive","Boolean","direction","type","String","default","symbol","nextIcon","prevIcon","showArrows","validator","v","includes","selectedClass","VSlideGroup","name","props","emits","value","setup","_ref","slots","isRtl","mobile","group","isOverflowing","scrollOffset","containerSize","contentSize","isHorizontal","resizeRef","containerRef","contentRect","containerRect","contentRef","firstSelectedIndex","selected","length","items","findIndex","item","id","lastSelectedIndex","frame","cancelAnimationFrame","requestAnimationFrame","sizeProperty","selectedElement","children","currentScrollOffset","disableTransition","startTouch","startOffset","onTouchstart","e","sign","touches","onTouchmove","onTouchend","maxScrollOffset","onScroll","isFocused","onFocusin","el","composedPath","onFocusout","onFocus","relatedTarget","contains","focus","onKeydown","key","location","focusable","querySelector","nextElementSibling","previousElementSibling","firstElementChild","lastElementChild","scrollTo","newAbsoluteOffset","contentStyles","scrollAmount","transform","transition","willChange","slotProps","next","prev","select","isSelected","hasAffixes","Math","abs","hasPrev","hasNext","_createVNode","tag","class","style","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 { IconValue } from '@/composables/icons'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { makeTagProps } from '@/composables/tag'\nimport { useDisplay } from '@/composables'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { useRtl } from '@/composables/locale'\n\n// Utilities\nimport { computed, shallowRef, watch } from 'vue'\nimport { clamp, focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from '@/util'\nimport { bias, calculateCenteredOffset, calculateUpdatedOffset } from './helpers'\n\n// Types\nimport type { GroupProvide } from '@/composables/group'\nimport type { InjectionKey, PropType } from 'vue'\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\ntype VSlideGroupSlots = {\n default: [SlideGroupSlot]\n prev: [SlideGroupSlot]\n next: [SlideGroupSlot]\n}\n\nexport const makeVSlideGroupProps = propsFactory({\n centerActive: Boolean,\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 ...makeTagProps(),\n ...makeGroupProps({\n selectedClass: 'v-slide-group-item--active',\n }),\n}, 'v-slide-group')\n\nexport const VSlideGroup = genericComponent<VSlideGroupSlots>()({\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 { mobile } = useDisplay()\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 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 (firstSelectedIndex.value >= 0 && contentRef.value) {\n // TODO: Is this too naive? Should we store element references in group composable?\n const selectedElement = contentRef.value.children[lastSelectedIndex.value] as HTMLElement\n\n if (firstSelectedIndex.value === 0 || !isOverflowing.value) {\n scrollOffset.value = 0\n } else if (props.centerActive) {\n scrollOffset.value = calculateCenteredOffset({\n selectedElement,\n containerSize: containerSize.value,\n contentSize: contentSize.value,\n isRtl: isRtl.value,\n isHorizontal: isHorizontal.value,\n })\n } else if (isOverflowing.value) {\n scrollOffset.value = calculateUpdatedOffset({\n selectedElement,\n containerSize: containerSize.value,\n contentSize: contentSize.value,\n isRtl: isRtl.value,\n currentScrollOffset: scrollOffset.value,\n isHorizontal: isHorizontal.value,\n })\n }\n }\n })\n })\n }\n\n const disableTransition = shallowRef(false)\n\n let startTouch = 0\n let startOffset = 0\n\n function onTouchstart (e: TouchEvent) {\n const sizeProperty = isHorizontal.value ? 'clientX' : 'clientY'\n const sign = isRtl.value && isHorizontal.value ? -1 : 1\n startOffset = sign * scrollOffset.value\n startTouch = e.touches[0][sizeProperty]\n disableTransition.value = true\n }\n\n function onTouchmove (e: TouchEvent) {\n if (!isOverflowing.value) return\n\n const sizeProperty = isHorizontal.value ? 'clientX' : 'clientY'\n const sign = isRtl.value && isHorizontal.value ? -1 : 1\n scrollOffset.value = sign * (startOffset + startTouch - e.touches[0][sizeProperty])\n }\n\n function onTouchend (e: TouchEvent) {\n const maxScrollOffset = contentSize.value - containerSize.value\n\n if (scrollOffset.value < 0 || !isOverflowing.value) {\n scrollOffset.value = 0\n } else if (scrollOffset.value >= maxScrollOffset) {\n scrollOffset.value = maxScrollOffset\n }\n\n disableTransition.value = false\n }\n\n function onScroll () {\n if (!containerRef.value) return\n\n containerRef.value[isHorizontal.value ? 'scrollLeft' : 'scrollTop'] = 0\n }\n\n const isFocused = shallowRef(false)\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n\n if (!isOverflowing.value || !contentRef.value) 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.value.children) {\n if (item === el) {\n scrollOffset.value = calculateUpdatedOffset({\n selectedElement: item as HTMLElement,\n containerSize: containerSize.value,\n contentSize: contentSize.value,\n isRtl: isRtl.value,\n currentScrollOffset: scrollOffset.value,\n isHorizontal: isHorizontal.value,\n })\n return\n }\n }\n }\n }\n\n function onFocusout (e: FocusEvent) {\n isFocused.value = false\n }\n\n function onFocus (e: FocusEvent) {\n if (\n !isFocused.value &&\n !(e.relatedTarget && contentRef.value?.contains(e.relatedTarget as Node))\n ) focus()\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (!contentRef.value) return\n\n if (isHorizontal.value) {\n if (e.key === 'ArrowRight') {\n focus(isRtl.value ? 'prev' : 'next')\n } else if (e.key === 'ArrowLeft') {\n focus(isRtl.value ? 'next' : 'prev')\n }\n } else {\n if (e.key === 'ArrowDown') {\n focus('next')\n } else if (e.key === 'ArrowUp') {\n focus('prev')\n }\n }\n\n if (e.key === 'Home') {\n focus('first')\n } else if (e.key === 'End') {\n focus('last')\n }\n }\n\n function focus (location?: 'next' | 'prev' | 'first' | 'last') {\n if (!contentRef.value) return\n\n if (!location) {\n const focusable = focusableChildren(contentRef.value)\n focusable[0]?.focus()\n } else if (location === 'next') {\n const el = contentRef.value.querySelector(':focus')?.nextElementSibling as HTMLElement | undefined\n if (el) el.focus()\n else focus('first')\n } else if (location === 'prev') {\n const el = contentRef.value.querySelector(':focus')?.previousElementSibling as HTMLElement | undefined\n if (el) el.focus()\n else focus('last')\n } else if (location === 'first') {\n (contentRef.value.firstElementChild as HTMLElement)?.focus()\n } else if (location === 'last') {\n (contentRef.value.lastElementChild as HTMLElement)?.focus()\n }\n }\n\n function scrollTo (location: 'prev' | 'next') {\n const newAbsoluteOffset = scrollOffset.value + (location === 'prev' ? -1 : 1) * containerSize.value\n\n scrollOffset.value = clamp(newAbsoluteOffset, 0, contentSize.value - containerSize.value)\n }\n\n const contentStyles = computed(() => {\n // This adds friction when scrolling the 'wrong' way when at max offset\n let scrollAmount = scrollOffset.value > contentSize.value - containerSize.value\n ? -(contentSize.value - containerSize.value) + bias(contentSize.value - containerSize.value - scrollOffset.value)\n : -scrollOffset.value\n\n // This adds friction when scrolling the 'wrong' way when at min offset\n if (scrollOffset.value <= 0) {\n scrollAmount = bias(-scrollOffset.value)\n }\n\n const sign = isRtl.value && isHorizontal.value ? -1 : 1\n return {\n transform: `translate${isHorizontal.value ? 'X' : 'Y'}(${sign * scrollAmount}px)`,\n transition: disableTransition.value ? 'none' : '',\n willChange: disableTransition.value ? 'transform' : '',\n }\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 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 isOverflowing.value || Math.abs(scrollOffset.value) > 0\n\n // Always show on mobile\n case 'mobile': return (\n mobile.value ||\n (isOverflowing.value || Math.abs(scrollOffset.value) > 0)\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 (isOverflowing.value || Math.abs(scrollOffset.value) > 0)\n )\n }\n })\n\n const hasPrev = computed(() => {\n return Math.abs(scrollOffset.value) > 0\n })\n\n const hasNext = computed(() => {\n // Check one scroll ahead to know the width of right-most item\n return contentSize.value > Math.abs(scrollOffset.value) + containerSize.value\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 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 onClick={ () => 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=\"v-slide-group__container\"\n onScroll={ onScroll }\n >\n <div\n ref={ contentRef }\n class=\"v-slide-group__content\"\n style={ contentStyles.value }\n onTouchstartPassive={ onTouchstart }\n onTouchmovePassive={ onTouchmove }\n onTouchendPassive={ onTouchend }\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 onClick={ () => 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 }\n },\n})\n\nexport type VSlideGroup = InstanceType<typeof VSlideGroup>\n"],"mappings":"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"}
|
|
@@ -148,7 +148,7 @@ declare const VSlideGroup: {
|
|
|
148
148
|
}, {
|
|
149
149
|
selected: vue.Ref<readonly number[]>;
|
|
150
150
|
scrollTo: (location: 'prev' | 'next') => void;
|
|
151
|
-
scrollOffset: vue.
|
|
151
|
+
scrollOffset: vue.ShallowRef<number>;
|
|
152
152
|
focus: (location?: 'next' | 'prev' | 'first' | 'last') => void;
|
|
153
153
|
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
154
154
|
'update:modelValue': (value: any) => boolean;
|
|
@@ -221,7 +221,7 @@ declare const VSlideGroup: {
|
|
|
221
221
|
} & vue.ShallowUnwrapRef<{
|
|
222
222
|
selected: vue.Ref<readonly number[]>;
|
|
223
223
|
scrollTo: (location: 'prev' | 'next') => void;
|
|
224
|
-
scrollOffset: vue.
|
|
224
|
+
scrollOffset: vue.ShallowRef<number>;
|
|
225
225
|
focus: (location?: 'next' | 'prev' | 'first' | 'last') => void;
|
|
226
226
|
}> & {} & vue.ComponentCustomProperties & {};
|
|
227
227
|
__isFragment?: undefined;
|
|
@@ -264,7 +264,7 @@ declare const VSlideGroup: {
|
|
|
264
264
|
}, {
|
|
265
265
|
selected: vue.Ref<readonly number[]>;
|
|
266
266
|
scrollTo: (location: 'prev' | 'next') => void;
|
|
267
|
-
scrollOffset: vue.
|
|
267
|
+
scrollOffset: vue.ShallowRef<number>;
|
|
268
268
|
focus: (location?: 'next' | 'prev' | 'first' | 'last') => void;
|
|
269
269
|
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
270
270
|
'update:modelValue': (value: any) => boolean;
|
|
@@ -4,7 +4,7 @@ import { makeElevationProps } from "../../composables/elevation.mjs";
|
|
|
4
4
|
import { makeRoundedProps } from "../../composables/rounded.mjs";
|
|
5
5
|
import { useRtl } from "../../composables/locale.mjs"; // Utilities
|
|
6
6
|
import { clamp, createRange, getDecimals, propsFactory } from "../../util/index.mjs";
|
|
7
|
-
import { computed, provide, ref, toRef } from 'vue';
|
|
7
|
+
import { computed, provide, ref, shallowRef, toRef } from 'vue';
|
|
8
8
|
|
|
9
9
|
// Types
|
|
10
10
|
|
|
@@ -130,8 +130,8 @@ export const useSlider = _ref => {
|
|
|
130
130
|
const thumbColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color);
|
|
131
131
|
const trackColor = computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color);
|
|
132
132
|
const trackFillColor = computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color);
|
|
133
|
-
const mousePressed =
|
|
134
|
-
const startOffset =
|
|
133
|
+
const mousePressed = shallowRef(false);
|
|
134
|
+
const startOffset = shallowRef(0);
|
|
135
135
|
const trackContainerRef = ref();
|
|
136
136
|
const activeThumbRef = ref();
|
|
137
137
|
function parseMouseMove(e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slider.mjs","names":["makeElevationProps","makeRoundedProps","useRtl","clamp","createRange","getDecimals","propsFactory","computed","provide","ref","toRef","VSliderSymbol","Symbol","for","getOffset","e","el","direction","vertical","rect","getBoundingClientRect","touch","touches","clientY","top","height","clientX","left","width","getPosition","position","length","changedTouches","makeSliderProps","disabled","Boolean","error","readonly","max","type","Number","String","default","min","step","thumbColor","thumbLabel","undefined","validator","v","thumbSize","showTicks","ticks","Array","Object","tickSize","color","trackColor","trackFillColor","trackSize","includes","reverse","elevation","useSteps","props","parseFloat","decimals","Math","value","roundValue","clamped","offset","newValue","round","toFixed","useSlider","_ref","steps","onSliderStart","onSliderMove","onSliderEnd","getActiveThumb","isRtl","isReversed","horizontalDirection","hd","parseInt","numTicks","mousePressed","startOffset","trackContainerRef","activeThumbRef","parseMouseMove","start","trackStart","trackLength","$el","clickOffset","clickPos","handleStop","handleStart","focus","contains","target","moveListenerOptions","passive","capture","onMouseMove","onSliderMouseUp","stopPropagation","preventDefault","window","removeEventListener","onSliderTouchend","onSliderTouchstart","addEventListener","onSliderMousedown","val","percentage","isNaN","parsedTicks","Infinity","map","t","isArray","label","toString","keys","key","hasLabels","some","_ref2","data","rounded"],"sources":["../../../src/components/VSlider/slider.ts"],"sourcesContent":["/* eslint-disable max-statements */\n// Composables\nimport { makeElevationProps } from '@/composables/elevation'\nimport { makeRoundedProps } from '@/composables/rounded'\nimport { useRtl } from '@/composables/locale'\n\n// Utilities\nimport { clamp, createRange, getDecimals, propsFactory } from '@/util'\nimport { computed, provide, ref, toRef } from 'vue'\n\n// Types\nimport type { ExtractPropTypes, InjectionKey, PropType, Ref } from 'vue'\nimport type { VSliderTrack } from './VSliderTrack'\n\ntype Tick = {\n value: number\n position: number\n label?: string\n}\n\ntype SliderProvide = {\n activeThumbRef: Ref<HTMLElement | undefined>\n color: Ref<string | undefined>\n decimals: Ref<number>\n direction: Ref<'vertical' | 'horizontal'>\n disabled: Ref<boolean | undefined>\n elevation: Ref<number | string | undefined>\n min: Ref<number>\n max: Ref<number>\n mousePressed: Ref<boolean>\n numTicks: Ref<number>\n onSliderMousedown: (e: MouseEvent) => void\n onSliderTouchstart: (e: TouchEvent) => void\n parseMouseMove: (e: MouseEvent | TouchEvent) => number\n position: (val: number) => number\n readonly: Ref<boolean | undefined>\n rounded: Ref<boolean | number | string | undefined>\n roundValue: (value: number) => number\n thumbLabel: Ref<boolean | string | undefined>\n showTicks: Ref<boolean | 'always'>\n startOffset: Ref<number>\n step: Ref<number>\n thumbSize: Ref<number>\n thumbColor: Ref<string | undefined>\n trackColor: Ref<string | undefined>\n trackFillColor: Ref<string | undefined>\n trackSize: Ref<number>\n ticks: Ref<number[] | Record<string, string> | undefined>\n tickSize: Ref<number>\n trackContainerRef: Ref<VSliderTrack | undefined>\n vertical: Ref<boolean>\n parsedTicks: Ref<Tick[]>\n hasLabels: Ref<boolean>\n isReversed: Ref<boolean>\n horizontalDirection: Ref<'ltr' | 'rtl'>\n}\n\nexport const VSliderSymbol: InjectionKey<SliderProvide> = Symbol.for('vuetify:v-slider')\n\nexport function getOffset (e: MouseEvent | TouchEvent, el: HTMLElement, direction: string) {\n const vertical = direction === 'vertical'\n const rect = el.getBoundingClientRect()\n const touch = 'touches' in e ? e.touches[0] : e\n return vertical\n ? touch.clientY - (rect.top + rect.height / 2)\n : touch.clientX - (rect.left + rect.width / 2)\n}\n\nfunction getPosition (e: MouseEvent | TouchEvent, position: 'clientX' | 'clientY'): number {\n if ('touches' in e && e.touches.length) return e.touches[0][position]\n else if ('changedTouches' in e && e.changedTouches.length) return e.changedTouches[0][position]\n else return (e as MouseEvent)[position]\n}\n\nexport const makeSliderProps = propsFactory({\n disabled: Boolean,\n error: Boolean,\n readonly: Boolean,\n max: {\n type: [Number, String],\n default: 100,\n },\n min: {\n type: [Number, String],\n default: 0,\n },\n step: {\n type: [Number, String],\n default: 0,\n },\n thumbColor: String,\n thumbLabel: {\n type: [Boolean, String] as PropType<boolean | 'always' | undefined>,\n default: undefined,\n validator: (v: any) => typeof v === 'boolean' || v === 'always',\n },\n thumbSize: {\n type: [Number, String],\n default: 20,\n },\n showTicks: {\n type: [Boolean, String] as PropType<boolean | 'always'>,\n default: false,\n validator: (v: any) => typeof v === 'boolean' || v === 'always',\n },\n ticks: {\n type: [Array, Object] as PropType<number[] | Record<number, string>>,\n },\n tickSize: {\n type: [Number, String],\n default: 2,\n },\n color: String,\n trackColor: String,\n trackFillColor: String,\n trackSize: {\n type: [Number, String],\n default: 4,\n },\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n validator: (v: any) => ['vertical', 'horizontal'].includes(v),\n },\n reverse: Boolean,\n\n ...makeRoundedProps(),\n ...makeElevationProps({\n elevation: 2,\n }),\n}, 'slider')\n\ntype SliderProps = ExtractPropTypes<ReturnType<typeof makeSliderProps>>\n\ntype SliderData = {\n value: number\n}\n\nexport const useSteps = (props: SliderProps) => {\n const min = computed(() => parseFloat(props.min))\n const max = computed(() => parseFloat(props.max))\n const step = computed(() => +props.step > 0 ? parseFloat(props.step) : 0)\n const decimals = computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)))\n\n function roundValue (value: number) {\n if (step.value <= 0) return value\n\n const clamped = clamp(value, min.value, max.value)\n const offset = min.value % step.value\n const newValue = Math.round((clamped - offset) / step.value) * step.value + offset\n\n return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value))\n }\n\n return { min, max, step, decimals, roundValue }\n}\n\nexport const useSlider = ({\n props,\n steps,\n onSliderStart,\n onSliderMove,\n onSliderEnd,\n getActiveThumb,\n}: {\n props: SliderProps\n steps: ReturnType<typeof useSteps>\n onSliderEnd: (data: SliderData) => void\n onSliderStart: (data: SliderData) => void\n onSliderMove: (data: SliderData) => void\n getActiveThumb: (e: MouseEvent | TouchEvent) => HTMLElement\n}) => {\n const { isRtl } = useRtl()\n const isReversed = toRef(props, 'reverse')\n const horizontalDirection = computed(() => {\n let hd: 'ltr' | 'rtl' = isRtl.value ? 'rtl' : 'ltr'\n\n if (props.reverse) {\n hd = hd === 'rtl' ? 'ltr' : 'rtl'\n }\n\n return hd\n })\n\n const { min, max, step, decimals, roundValue } = steps\n\n const thumbSize = computed(() => parseInt(props.thumbSize, 10))\n const tickSize = computed(() => parseInt(props.tickSize, 10))\n const trackSize = computed(() => parseInt(props.trackSize, 10))\n const numTicks = computed(() => (max.value - min.value) / step.value)\n const disabled = toRef(props, 'disabled')\n const vertical = computed(() => props.direction === 'vertical')\n\n const thumbColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color)\n const trackColor = computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color)\n const trackFillColor = computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color)\n\n const mousePressed = ref(false)\n\n const startOffset = ref(0)\n const trackContainerRef = ref<VSliderTrack | undefined>()\n const activeThumbRef = ref<HTMLElement | undefined>()\n\n function parseMouseMove (e: MouseEvent | TouchEvent): number {\n const vertical = props.direction === 'vertical'\n const start = vertical ? 'top' : 'left'\n const length = vertical ? 'height' : 'width'\n const position = vertical ? 'clientY' : 'clientX'\n\n const {\n [start]: trackStart,\n [length]: trackLength,\n } = trackContainerRef.value?.$el.getBoundingClientRect()\n const clickOffset = getPosition(e, position)\n\n // It is possible for left to be NaN, force to number\n let clickPos = Math.min(Math.max((clickOffset - trackStart - startOffset.value) / trackLength, 0), 1) || 0\n\n if (vertical || horizontalDirection.value === 'rtl') clickPos = 1 - clickPos\n\n return roundValue(min.value + clickPos * (max.value - min.value))\n }\n\n const handleStop = (e: MouseEvent | TouchEvent) => {\n onSliderEnd({ value: parseMouseMove(e) })\n\n mousePressed.value = false\n startOffset.value = 0\n }\n\n const handleStart = (e: MouseEvent | TouchEvent) => {\n activeThumbRef.value = getActiveThumb(e)\n\n if (!activeThumbRef.value) return\n\n activeThumbRef.value.focus()\n mousePressed.value = true\n\n if (activeThumbRef.value.contains(e.target as Node)) {\n startOffset.value = getOffset(e, activeThumbRef.value, props.direction)\n } else {\n startOffset.value = 0\n onSliderMove({ value: parseMouseMove(e) })\n }\n\n onSliderStart({ value: parseMouseMove(e) })\n }\n\n const moveListenerOptions = { passive: true, capture: true }\n\n function onMouseMove (e: MouseEvent | TouchEvent) {\n onSliderMove({ value: parseMouseMove(e) })\n }\n\n function onSliderMouseUp (e: MouseEvent) {\n e.stopPropagation()\n e.preventDefault()\n\n handleStop(e)\n\n window.removeEventListener('mousemove', onMouseMove, moveListenerOptions)\n window.removeEventListener('mouseup', onSliderMouseUp)\n }\n\n function onSliderTouchend (e: TouchEvent) {\n handleStop(e)\n\n window.removeEventListener('touchmove', onMouseMove, moveListenerOptions)\n e.target?.removeEventListener('touchend', onSliderTouchend as EventListener)\n }\n\n function onSliderTouchstart (e: TouchEvent) {\n handleStart(e)\n\n window.addEventListener('touchmove', onMouseMove, moveListenerOptions)\n e.target?.addEventListener('touchend', onSliderTouchend as EventListener, { passive: false })\n }\n\n function onSliderMousedown (e: MouseEvent) {\n e.preventDefault()\n\n handleStart(e)\n\n window.addEventListener('mousemove', onMouseMove, moveListenerOptions)\n window.addEventListener('mouseup', onSliderMouseUp, { passive: false })\n }\n\n const position = (val: number) => {\n const percentage = (val - min.value) / (max.value - min.value) * 100\n return clamp(isNaN(percentage) ? 0 : percentage, 0, 100)\n }\n\n const showTicks = toRef(props, 'showTicks')\n const parsedTicks = computed<Tick[]>(() => {\n if (!showTicks.value) return []\n\n if (!props.ticks) {\n return numTicks.value !== Infinity ? createRange(numTicks.value + 1).map(t => {\n const value = min.value + (t * step.value)\n return {\n value,\n position: position(value),\n }\n }) : []\n }\n if (Array.isArray(props.ticks)) return props.ticks.map(t => ({ value: t, position: position(t), label: t.toString() }))\n return Object.keys(props.ticks).map(key => ({\n value: parseFloat(key),\n position: position(parseFloat(key)),\n label: (props.ticks as Record<string, string>)[key],\n }))\n })\n\n const hasLabels = computed(() => parsedTicks.value.some(({ label }) => !!label))\n\n const data: SliderProvide = {\n activeThumbRef,\n color: toRef(props, 'color'),\n decimals,\n disabled,\n direction: toRef(props, 'direction'),\n elevation: toRef(props, 'elevation'),\n hasLabels,\n horizontalDirection,\n isReversed,\n min,\n max,\n mousePressed,\n numTicks,\n onSliderMousedown,\n onSliderTouchstart,\n parsedTicks,\n parseMouseMove,\n position,\n readonly: toRef(props, 'readonly'),\n rounded: toRef(props, 'rounded'),\n roundValue,\n showTicks,\n startOffset,\n step,\n thumbSize,\n thumbColor,\n thumbLabel: toRef(props, 'thumbLabel'),\n ticks: toRef(props, 'ticks'),\n tickSize,\n trackColor,\n trackContainerRef,\n trackFillColor,\n trackSize,\n vertical,\n }\n\n provide(VSliderSymbol, data)\n\n return data\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slider.mjs","names":["makeElevationProps","makeRoundedProps","useRtl","clamp","createRange","getDecimals","propsFactory","computed","provide","ref","shallowRef","toRef","VSliderSymbol","Symbol","for","getOffset","e","el","direction","vertical","rect","getBoundingClientRect","touch","touches","clientY","top","height","clientX","left","width","getPosition","position","length","changedTouches","makeSliderProps","disabled","Boolean","error","readonly","max","type","Number","String","default","min","step","thumbColor","thumbLabel","undefined","validator","v","thumbSize","showTicks","ticks","Array","Object","tickSize","color","trackColor","trackFillColor","trackSize","includes","reverse","elevation","useSteps","props","parseFloat","decimals","Math","value","roundValue","clamped","offset","newValue","round","toFixed","useSlider","_ref","steps","onSliderStart","onSliderMove","onSliderEnd","getActiveThumb","isRtl","isReversed","horizontalDirection","hd","parseInt","numTicks","mousePressed","startOffset","trackContainerRef","activeThumbRef","parseMouseMove","start","trackStart","trackLength","$el","clickOffset","clickPos","handleStop","handleStart","focus","contains","target","moveListenerOptions","passive","capture","onMouseMove","onSliderMouseUp","stopPropagation","preventDefault","window","removeEventListener","onSliderTouchend","onSliderTouchstart","addEventListener","onSliderMousedown","val","percentage","isNaN","parsedTicks","Infinity","map","t","isArray","label","toString","keys","key","hasLabels","some","_ref2","data","rounded"],"sources":["../../../src/components/VSlider/slider.ts"],"sourcesContent":["/* eslint-disable max-statements */\n// Composables\nimport { makeElevationProps } from '@/composables/elevation'\nimport { makeRoundedProps } from '@/composables/rounded'\nimport { useRtl } from '@/composables/locale'\n\n// Utilities\nimport { clamp, createRange, getDecimals, propsFactory } from '@/util'\nimport { computed, provide, ref, shallowRef, toRef } from 'vue'\n\n// Types\nimport type { ExtractPropTypes, InjectionKey, PropType, Ref } from 'vue'\nimport type { VSliderTrack } from './VSliderTrack'\n\ntype Tick = {\n value: number\n position: number\n label?: string\n}\n\ntype SliderProvide = {\n activeThumbRef: Ref<HTMLElement | undefined>\n color: Ref<string | undefined>\n decimals: Ref<number>\n direction: Ref<'vertical' | 'horizontal'>\n disabled: Ref<boolean | undefined>\n elevation: Ref<number | string | undefined>\n min: Ref<number>\n max: Ref<number>\n mousePressed: Ref<boolean>\n numTicks: Ref<number>\n onSliderMousedown: (e: MouseEvent) => void\n onSliderTouchstart: (e: TouchEvent) => void\n parseMouseMove: (e: MouseEvent | TouchEvent) => number\n position: (val: number) => number\n readonly: Ref<boolean | undefined>\n rounded: Ref<boolean | number | string | undefined>\n roundValue: (value: number) => number\n thumbLabel: Ref<boolean | string | undefined>\n showTicks: Ref<boolean | 'always'>\n startOffset: Ref<number>\n step: Ref<number>\n thumbSize: Ref<number>\n thumbColor: Ref<string | undefined>\n trackColor: Ref<string | undefined>\n trackFillColor: Ref<string | undefined>\n trackSize: Ref<number>\n ticks: Ref<number[] | Record<string, string> | undefined>\n tickSize: Ref<number>\n trackContainerRef: Ref<VSliderTrack | undefined>\n vertical: Ref<boolean>\n parsedTicks: Ref<Tick[]>\n hasLabels: Ref<boolean>\n isReversed: Ref<boolean>\n horizontalDirection: Ref<'ltr' | 'rtl'>\n}\n\nexport const VSliderSymbol: InjectionKey<SliderProvide> = Symbol.for('vuetify:v-slider')\n\nexport function getOffset (e: MouseEvent | TouchEvent, el: HTMLElement, direction: string) {\n const vertical = direction === 'vertical'\n const rect = el.getBoundingClientRect()\n const touch = 'touches' in e ? e.touches[0] : e\n return vertical\n ? touch.clientY - (rect.top + rect.height / 2)\n : touch.clientX - (rect.left + rect.width / 2)\n}\n\nfunction getPosition (e: MouseEvent | TouchEvent, position: 'clientX' | 'clientY'): number {\n if ('touches' in e && e.touches.length) return e.touches[0][position]\n else if ('changedTouches' in e && e.changedTouches.length) return e.changedTouches[0][position]\n else return (e as MouseEvent)[position]\n}\n\nexport const makeSliderProps = propsFactory({\n disabled: Boolean,\n error: Boolean,\n readonly: Boolean,\n max: {\n type: [Number, String],\n default: 100,\n },\n min: {\n type: [Number, String],\n default: 0,\n },\n step: {\n type: [Number, String],\n default: 0,\n },\n thumbColor: String,\n thumbLabel: {\n type: [Boolean, String] as PropType<boolean | 'always' | undefined>,\n default: undefined,\n validator: (v: any) => typeof v === 'boolean' || v === 'always',\n },\n thumbSize: {\n type: [Number, String],\n default: 20,\n },\n showTicks: {\n type: [Boolean, String] as PropType<boolean | 'always'>,\n default: false,\n validator: (v: any) => typeof v === 'boolean' || v === 'always',\n },\n ticks: {\n type: [Array, Object] as PropType<number[] | Record<number, string>>,\n },\n tickSize: {\n type: [Number, String],\n default: 2,\n },\n color: String,\n trackColor: String,\n trackFillColor: String,\n trackSize: {\n type: [Number, String],\n default: 4,\n },\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n validator: (v: any) => ['vertical', 'horizontal'].includes(v),\n },\n reverse: Boolean,\n\n ...makeRoundedProps(),\n ...makeElevationProps({\n elevation: 2,\n }),\n}, 'slider')\n\ntype SliderProps = ExtractPropTypes<ReturnType<typeof makeSliderProps>>\n\ntype SliderData = {\n value: number\n}\n\nexport const useSteps = (props: SliderProps) => {\n const min = computed(() => parseFloat(props.min))\n const max = computed(() => parseFloat(props.max))\n const step = computed(() => +props.step > 0 ? parseFloat(props.step) : 0)\n const decimals = computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)))\n\n function roundValue (value: number) {\n if (step.value <= 0) return value\n\n const clamped = clamp(value, min.value, max.value)\n const offset = min.value % step.value\n const newValue = Math.round((clamped - offset) / step.value) * step.value + offset\n\n return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value))\n }\n\n return { min, max, step, decimals, roundValue }\n}\n\nexport const useSlider = ({\n props,\n steps,\n onSliderStart,\n onSliderMove,\n onSliderEnd,\n getActiveThumb,\n}: {\n props: SliderProps\n steps: ReturnType<typeof useSteps>\n onSliderEnd: (data: SliderData) => void\n onSliderStart: (data: SliderData) => void\n onSliderMove: (data: SliderData) => void\n getActiveThumb: (e: MouseEvent | TouchEvent) => HTMLElement\n}) => {\n const { isRtl } = useRtl()\n const isReversed = toRef(props, 'reverse')\n const horizontalDirection = computed(() => {\n let hd: 'ltr' | 'rtl' = isRtl.value ? 'rtl' : 'ltr'\n\n if (props.reverse) {\n hd = hd === 'rtl' ? 'ltr' : 'rtl'\n }\n\n return hd\n })\n\n const { min, max, step, decimals, roundValue } = steps\n\n const thumbSize = computed(() => parseInt(props.thumbSize, 10))\n const tickSize = computed(() => parseInt(props.tickSize, 10))\n const trackSize = computed(() => parseInt(props.trackSize, 10))\n const numTicks = computed(() => (max.value - min.value) / step.value)\n const disabled = toRef(props, 'disabled')\n const vertical = computed(() => props.direction === 'vertical')\n\n const thumbColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color)\n const trackColor = computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color)\n const trackFillColor = computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color)\n\n const mousePressed = 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 {\n const vertical = props.direction === 'vertical'\n const start = vertical ? 'top' : 'left'\n const length = vertical ? 'height' : 'width'\n const position = vertical ? 'clientY' : 'clientX'\n\n const {\n [start]: trackStart,\n [length]: trackLength,\n } = trackContainerRef.value?.$el.getBoundingClientRect()\n const clickOffset = getPosition(e, position)\n\n // It is possible for left to be NaN, force to number\n let clickPos = Math.min(Math.max((clickOffset - trackStart - startOffset.value) / trackLength, 0), 1) || 0\n\n if (vertical || horizontalDirection.value === 'rtl') clickPos = 1 - clickPos\n\n return roundValue(min.value + clickPos * (max.value - min.value))\n }\n\n const handleStop = (e: MouseEvent | TouchEvent) => {\n onSliderEnd({ value: parseMouseMove(e) })\n\n mousePressed.value = false\n startOffset.value = 0\n }\n\n const handleStart = (e: MouseEvent | TouchEvent) => {\n activeThumbRef.value = getActiveThumb(e)\n\n if (!activeThumbRef.value) return\n\n activeThumbRef.value.focus()\n mousePressed.value = true\n\n if (activeThumbRef.value.contains(e.target as Node)) {\n startOffset.value = getOffset(e, activeThumbRef.value, props.direction)\n } else {\n startOffset.value = 0\n onSliderMove({ value: parseMouseMove(e) })\n }\n\n onSliderStart({ value: parseMouseMove(e) })\n }\n\n const moveListenerOptions = { passive: true, capture: true }\n\n function onMouseMove (e: MouseEvent | TouchEvent) {\n onSliderMove({ value: parseMouseMove(e) })\n }\n\n function onSliderMouseUp (e: MouseEvent) {\n e.stopPropagation()\n e.preventDefault()\n\n handleStop(e)\n\n window.removeEventListener('mousemove', onMouseMove, moveListenerOptions)\n window.removeEventListener('mouseup', onSliderMouseUp)\n }\n\n function onSliderTouchend (e: TouchEvent) {\n handleStop(e)\n\n window.removeEventListener('touchmove', onMouseMove, moveListenerOptions)\n e.target?.removeEventListener('touchend', onSliderTouchend as EventListener)\n }\n\n function onSliderTouchstart (e: TouchEvent) {\n handleStart(e)\n\n window.addEventListener('touchmove', onMouseMove, moveListenerOptions)\n e.target?.addEventListener('touchend', onSliderTouchend as EventListener, { passive: false })\n }\n\n function onSliderMousedown (e: MouseEvent) {\n e.preventDefault()\n\n handleStart(e)\n\n window.addEventListener('mousemove', onMouseMove, moveListenerOptions)\n window.addEventListener('mouseup', onSliderMouseUp, { passive: false })\n }\n\n const position = (val: number) => {\n const percentage = (val - min.value) / (max.value - min.value) * 100\n return clamp(isNaN(percentage) ? 0 : percentage, 0, 100)\n }\n\n const showTicks = toRef(props, 'showTicks')\n const parsedTicks = computed<Tick[]>(() => {\n if (!showTicks.value) return []\n\n if (!props.ticks) {\n return numTicks.value !== Infinity ? createRange(numTicks.value + 1).map(t => {\n const value = min.value + (t * step.value)\n return {\n value,\n position: position(value),\n }\n }) : []\n }\n if (Array.isArray(props.ticks)) return props.ticks.map(t => ({ value: t, position: position(t), label: t.toString() }))\n return Object.keys(props.ticks).map(key => ({\n value: parseFloat(key),\n position: position(parseFloat(key)),\n label: (props.ticks as Record<string, string>)[key],\n }))\n })\n\n const hasLabels = computed(() => parsedTicks.value.some(({ label }) => !!label))\n\n const data: SliderProvide = {\n activeThumbRef,\n color: toRef(props, 'color'),\n decimals,\n disabled,\n direction: toRef(props, 'direction'),\n elevation: toRef(props, 'elevation'),\n hasLabels,\n horizontalDirection,\n isReversed,\n min,\n max,\n mousePressed,\n numTicks,\n onSliderMousedown,\n onSliderTouchstart,\n parsedTicks,\n parseMouseMove,\n position,\n readonly: toRef(props, 'readonly'),\n rounded: toRef(props, 'rounded'),\n roundValue,\n showTicks,\n startOffset,\n step,\n thumbSize,\n thumbColor,\n thumbLabel: toRef(props, 'thumbLabel'),\n ticks: toRef(props, 'ticks'),\n tickSize,\n trackColor,\n trackContainerRef,\n trackFillColor,\n trackSize,\n vertical,\n }\n\n provide(VSliderSymbol, data)\n\n return data\n}\n"],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ import { makeTagProps } from "../../composables/tag.mjs";
|
|
|
11
11
|
import { makeThemeProps, provideTheme } from "../../composables/theme.mjs";
|
|
12
12
|
import { useBackgroundColor } from "../../composables/color.mjs";
|
|
13
13
|
import { useSsrBoot } from "../../composables/ssrBoot.mjs"; // Utilities
|
|
14
|
-
import { computed,
|
|
14
|
+
import { computed, shallowRef, toRef } from 'vue';
|
|
15
15
|
import { genericComponent, propsFactory, useRender } from "../../util/index.mjs";
|
|
16
16
|
export const makeVSystemBarProps = propsFactory({
|
|
17
17
|
color: String,
|
|
@@ -53,7 +53,7 @@ export const VSystemBar = genericComponent()({
|
|
|
53
53
|
} = useLayoutItem({
|
|
54
54
|
id: props.name,
|
|
55
55
|
order: computed(() => parseInt(props.order, 10)),
|
|
56
|
-
position:
|
|
56
|
+
position: shallowRef('top'),
|
|
57
57
|
layoutSize: height,
|
|
58
58
|
elementSize: height,
|
|
59
59
|
active: computed(() => true),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VSystemBar.mjs","names":["makeComponentProps","makeElevationProps","useElevation","makeLayoutItemProps","useLayoutItem","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","useBackgroundColor","useSsrBoot","computed","
|
|
1
|
+
{"version":3,"file":"VSystemBar.mjs","names":["makeComponentProps","makeElevationProps","useElevation","makeLayoutItemProps","useLayoutItem","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","useBackgroundColor","useSsrBoot","computed","shallowRef","toRef","genericComponent","propsFactory","useRender","makeVSystemBarProps","color","String","height","Number","window","Boolean","VSystemBar","name","props","setup","_ref","slots","themeClasses","backgroundColorClasses","backgroundColorStyles","elevationClasses","roundedClasses","ssrBootStyles","layoutItemStyles","id","order","parseInt","position","layoutSize","elementSize","active","absolute","_createVNode","tag","value","class","style"],"sources":["../../../src/components/VSystemBar/VSystemBar.tsx"],"sourcesContent":["// Styles\nimport './VSystemBar.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useBackgroundColor } from '@/composables/color'\nimport { useSsrBoot } from '@/composables/ssrBoot'\n\n// Utilities\nimport { computed, shallowRef, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVSystemBarProps = propsFactory({\n color: String,\n height: [Number, String],\n window: Boolean,\n\n ...makeComponentProps(),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'v-system-bar')\n\nexport const VSystemBar = genericComponent()({\n name: 'VSystemBar',\n\n props: makeVSystemBarProps(),\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const { ssrBootStyles } = useSsrBoot()\n const height = computed(() => props.height ?? (props.window ? 32 : 24))\n const { layoutItemStyles } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: shallowRef('top'),\n layoutSize: height,\n elementSize: height,\n active: computed(() => true),\n absolute: toRef(props, 'absolute'),\n })\n\n useRender(() => (\n <props.tag\n class={[\n 'v-system-bar',\n { 'v-system-bar--window': props.window },\n themeClasses.value,\n backgroundColorClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n layoutItemStyles.value,\n ssrBootStyles.value,\n props.style,\n ]}\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VSystemBar = InstanceType<typeof VSystemBar>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,mBAAmB,EAAEC,aAAa;AAAA,SAClCC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,YAAY;AAAA,SACZC,cAAc,EAAEC,YAAY;AAAA,SAC5BC,kBAAkB;AAAA,SAClBC,UAAU,yCAEnB;AACA,SAASC,QAAQ,EAAEC,UAAU,EAAEC,KAAK,QAAQ,KAAK;AAAA,SACxCC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS;AAElD,OAAO,MAAMC,mBAAmB,GAAGF,YAAY,CAAC;EAC9CG,KAAK,EAAEC,MAAM;EACbC,MAAM,EAAE,CAACC,MAAM,EAAEF,MAAM,CAAC;EACxBG,MAAM,EAAEC,OAAO;EAEf,GAAGxB,kBAAkB,EAAE;EACvB,GAAGC,kBAAkB,EAAE;EACvB,GAAGE,mBAAmB,EAAE;EACxB,GAAGE,gBAAgB,EAAE;EACrB,GAAGE,YAAY,EAAE;EACjB,GAAGC,cAAc;AACnB,CAAC,EAAE,cAAc,CAAC;AAElB,OAAO,MAAMiB,UAAU,GAAGV,gBAAgB,EAAE,CAAC;EAC3CW,IAAI,EAAE,YAAY;EAElBC,KAAK,EAAET,mBAAmB,EAAE;EAE5BU,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAEE;IAAa,CAAC,GAAGtB,YAAY,CAACkB,KAAK,CAAC;IAC5C,MAAM;MAAEK,sBAAsB;MAAEC;IAAsB,CAAC,GAAGvB,kBAAkB,CAACI,KAAK,CAACa,KAAK,EAAE,OAAO,CAAC,CAAC;IACnG,MAAM;MAAEO;IAAiB,CAAC,GAAGhC,YAAY,CAACyB,KAAK,CAAC;IAChD,MAAM;MAAEQ;IAAe,CAAC,GAAG7B,UAAU,CAACqB,KAAK,CAAC;IAC5C,MAAM;MAAES;IAAc,CAAC,GAAGzB,UAAU,EAAE;IACtC,MAAMU,MAAM,GAAGT,QAAQ,CAAC,MAAMe,KAAK,CAACN,MAAM,KAAKM,KAAK,CAACJ,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACvE,MAAM;MAAEc;IAAiB,CAAC,GAAGjC,aAAa,CAAC;MACzCkC,EAAE,EAAEX,KAAK,CAACD,IAAI;MACda,KAAK,EAAE3B,QAAQ,CAAC,MAAM4B,QAAQ,CAACb,KAAK,CAACY,KAAK,EAAE,EAAE,CAAC,CAAC;MAChDE,QAAQ,EAAE5B,UAAU,CAAC,KAAK,CAAC;MAC3B6B,UAAU,EAAErB,MAAM;MAClBsB,WAAW,EAAEtB,MAAM;MACnBuB,MAAM,EAAEhC,QAAQ,CAAC,MAAM,IAAI,CAAC;MAC5BiC,QAAQ,EAAE/B,KAAK,CAACa,KAAK,EAAE,UAAU;IACnC,CAAC,CAAC;IAEFV,SAAS,CAAC,MAAA6B,YAAA,CAAAnB,KAAA,CAAAoB,GAAA;MAAA,SAEC,CACL,cAAc,EACd;QAAE,sBAAsB,EAAEpB,KAAK,CAACJ;MAAO,CAAC,EACxCQ,YAAY,CAACiB,KAAK,EAClBhB,sBAAsB,CAACgB,KAAK,EAC5Bd,gBAAgB,CAACc,KAAK,EACtBb,cAAc,CAACa,KAAK,EACpBrB,KAAK,CAACsB,KAAK,CACZ;MAAA,SACM,CACLhB,qBAAqB,CAACe,KAAK,EAC3BX,gBAAgB,CAACW,KAAK,EACtBZ,aAAa,CAACY,KAAK,EACnBrB,KAAK,CAACuB,KAAK;IACZ,GACSpB,KAAK,CAElB,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
|
|
@@ -3,12 +3,11 @@ import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
|
|
|
3
3
|
import "./VTab.css";
|
|
4
4
|
|
|
5
5
|
// Components
|
|
6
|
-
import { VBtn } from "../VBtn/
|
|
6
|
+
import { makeVBtnProps, VBtn } from "../VBtn/VBtn.mjs"; // Composables
|
|
7
7
|
import { useTextColor } from "../../composables/color.mjs"; // Utilities
|
|
8
|
-
import { computed, ref } from 'vue';
|
|
9
8
|
import { animate, genericComponent, omit, propsFactory, standardEasing, useRender } from "../../util/index.mjs";
|
|
10
|
-
import {
|
|
11
|
-
import { VTabsSymbol } from "./shared.mjs";
|
|
9
|
+
import { computed, ref, shallowRef } from 'vue';
|
|
10
|
+
import { VTabsSymbol } from "./shared.mjs"; // Types
|
|
12
11
|
export const makeVTabProps = propsFactory({
|
|
13
12
|
fixed: Boolean,
|
|
14
13
|
sliderColor: String,
|
|
@@ -35,7 +34,7 @@ export const VTab = genericComponent()({
|
|
|
35
34
|
textColorStyles: sliderColorStyles
|
|
36
35
|
} = useTextColor(props, 'sliderColor');
|
|
37
36
|
const isHorizontal = computed(() => props.direction === 'horizontal');
|
|
38
|
-
const isSelected =
|
|
37
|
+
const isSelected = shallowRef(false);
|
|
39
38
|
const rootEl = ref();
|
|
40
39
|
const sliderEl = ref();
|
|
41
40
|
function updateSlider(_ref2) {
|