@vuetify/nightly 3.9.3-dev.2025-08-01 → 3.9.3-dev.2025-08-02

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.
@@ -28,6 +28,7 @@ type VDataIteratorSlotProps<T> = {
28
28
  isGroupOpen: ReturnType<typeof provideGroupBy>['isGroupOpen'];
29
29
  toggleGroup: ReturnType<typeof provideGroupBy>['toggleGroup'];
30
30
  items: readonly DataIteratorItem<T>[];
31
+ itemsCount: number;
31
32
  groupedItems: readonly (DataIteratorItem<T> | Group<DataIteratorItem<T>>)[];
32
33
  };
33
34
  export type VDataIteratorSlots<T> = {
@@ -161,6 +161,7 @@ export const VDataIterator = genericComponent()({
161
161
  isGroupOpen,
162
162
  toggleGroup,
163
163
  items: paginatedItemsWithoutGroups.value,
164
+ itemsCount: filteredItems.value.length,
164
165
  groupedItems: paginatedItems.value
165
166
  }));
166
167
  useRender(() => _createVNode(props.tag, {
@@ -1 +1 @@
1
- {"version":3,"file":"VDataIterator.js","names":["VFadeTransition","makeDataTableExpandProps","provideExpanded","makeDataTableGroupProps","provideGroupBy","useGroupedItems","useOptions","createPagination","makeDataTablePaginateProps","providePagination","usePaginatedItems","makeDataTableSelectProps","provideSelection","createSort","makeDataTableSortProps","provideSort","useSortedItems","makeDataIteratorItemsProps","useDataIteratorItems","makeComponentProps","makeFilterProps","useFilter","LoaderSlot","useProxiedModel","makeTagProps","makeTransitionProps","MaybeTransition","computed","toRef","genericComponent","propsFactory","useRender","makeVDataIteratorProps","search","String","loading","Boolean","itemsPerPage","transition","component","hideOnLeave","VDataIterator","name","props","emits","value","setup","_ref","slots","groupBy","items","filteredItems","transform","item","raw","sortBy","multiSort","mustSort","page","toggleSort","sortByWithGroups","opened","extractRows","isGroupOpen","toggleGroup","sortedItems","flatItems","itemsLength","length","startIndex","stopIndex","pageCount","prevPage","nextPage","setItemsPerPage","setPage","paginatedItems","paginatedItemsWithoutGroups","isSelected","select","selectAll","toggleSelect","allItems","currentPage","isExpanded","toggleExpand","slotProps","groupedItems","_createVNode","tag","_normalizeClass","class","_normalizeStyle","style","default","header","loader","_createElementVNode","footer"],"sources":["../../../src/components/VDataIterator/VDataIterator.tsx"],"sourcesContent":["// Components\nimport { VFadeTransition } from '@/components/transitions'\nimport { makeDataTableExpandProps, provideExpanded } from '@/components/VDataTable/composables/expand'\nimport { makeDataTableGroupProps, provideGroupBy, useGroupedItems } from '@/components/VDataTable/composables/group'\nimport { useOptions } from '@/components/VDataTable/composables/options'\nimport {\n createPagination,\n makeDataTablePaginateProps,\n providePagination,\n usePaginatedItems,\n} from '@/components/VDataTable/composables/paginate'\nimport { makeDataTableSelectProps, provideSelection } from '@/components/VDataTable/composables/select'\nimport { createSort, makeDataTableSortProps, provideSort, useSortedItems } from '@/components/VDataTable/composables/sort'\n\n// Composables\nimport { makeDataIteratorItemsProps, useDataIteratorItems } from './composables/items'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { LoaderSlot } from '@/composables/loader'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Component } from 'vue'\nimport type { DataIteratorItem } from './composables/items'\nimport type { Group } from '@/components/VDataTable/composables/group'\nimport type { SortItem } from '@/components/VDataTable/composables/sort'\nimport type { LoaderSlotProps } from '@/composables/loader'\nimport type { GenericProps } from '@/util'\n\ntype VDataIteratorSlotProps<T> = {\n page: number\n itemsPerPage: number\n sortBy: readonly SortItem[]\n pageCount: number\n toggleSort: ReturnType<typeof provideSort>['toggleSort']\n prevPage: ReturnType<typeof providePagination>['prevPage']\n nextPage: ReturnType<typeof providePagination>['nextPage']\n setPage: ReturnType<typeof providePagination>['setPage']\n setItemsPerPage: ReturnType<typeof providePagination>['setItemsPerPage']\n isSelected: ReturnType<typeof provideSelection>['isSelected']\n select: ReturnType<typeof provideSelection>['select']\n selectAll: ReturnType<typeof provideSelection>['selectAll']\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n isGroupOpen: ReturnType<typeof provideGroupBy>['isGroupOpen']\n toggleGroup: ReturnType<typeof provideGroupBy>['toggleGroup']\n items: readonly DataIteratorItem<T>[]\n groupedItems: readonly (DataIteratorItem<T> | Group<DataIteratorItem<T>>)[]\n}\n\nexport type VDataIteratorSlots<T> = {\n default: VDataIteratorSlotProps<T>\n header: VDataIteratorSlotProps<T>\n footer: VDataIteratorSlotProps<T>\n loader: LoaderSlotProps\n 'no-data': never\n}\n\nexport const makeVDataIteratorProps = propsFactory({\n search: String,\n loading: Boolean,\n\n ...makeComponentProps(),\n ...makeDataIteratorItemsProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeDataTablePaginateProps({ itemsPerPage: 5 }),\n ...makeDataTableExpandProps(),\n ...makeDataTableGroupProps(),\n ...makeFilterProps(),\n ...makeTagProps(),\n ...makeTransitionProps({\n transition: {\n component: VFadeTransition as Component,\n hideOnLeave: true,\n },\n }),\n}, 'VDataIterator')\n\nexport const VDataIterator = genericComponent<new <T> (\n props: {\n items?: readonly T[]\n },\n slots: VDataIteratorSlots<T>,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VDataIterator',\n\n props: makeVDataIteratorProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:groupBy': (value: any) => true,\n 'update:page': (value: number) => true,\n 'update:itemsPerPage': (value: number) => true,\n 'update:sortBy': (value: any) => true,\n 'update:options': (value: any) => true,\n 'update:expanded': (value: any) => true,\n 'update:currentItems': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const groupBy = useProxiedModel(props, 'groupBy')\n const search = toRef(() => props.search)\n\n const { items } = useDataIteratorItems(props)\n const { filteredItems } = useFilter(props, items, search, { transform: item => item.raw })\n\n const { sortBy, multiSort, mustSort } = createSort(props)\n const { page, itemsPerPage } = createPagination(props)\n\n const { toggleSort } = provideSort({ sortBy, multiSort, mustSort, page })\n const { sortByWithGroups, opened, extractRows, isGroupOpen, toggleGroup } = provideGroupBy({ groupBy, sortBy })\n\n const { sortedItems } = useSortedItems(props, filteredItems, sortByWithGroups, { transform: item => item.raw })\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n\n const itemsLength = toRef(() => flatItems.value.length)\n\n const {\n startIndex,\n stopIndex,\n pageCount,\n prevPage,\n nextPage,\n setItemsPerPage,\n setPage,\n } = providePagination({ page, itemsPerPage, itemsLength })\n const { paginatedItems } = usePaginatedItems({ items: flatItems, startIndex, stopIndex, itemsPerPage })\n\n const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value))\n\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n } = provideSelection(props, { allItems: items, currentPage: paginatedItemsWithoutGroups })\n const { isExpanded, toggleExpand } = provideExpanded(props)\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search,\n })\n\n const slotProps = computed(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n pageCount: pageCount.value,\n toggleSort,\n prevPage,\n nextPage,\n setPage,\n setItemsPerPage,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: paginatedItemsWithoutGroups.value,\n groupedItems: paginatedItems.value,\n }))\n\n useRender(() => (\n <props.tag\n class={[\n 'v-data-iterator',\n {\n 'v-data-iterator--loading': props.loading,\n },\n props.class,\n ]}\n style={ props.style }\n >\n { slots.header?.(slotProps.value) }\n\n <MaybeTransition transition={ props.transition }>\n { props.loading ? (\n <LoaderSlot key=\"loader\" name=\"v-data-iterator\" active>\n { slotProps => slots.loader?.(slotProps) }\n </LoaderSlot>\n ) : (\n <div key=\"items\">\n { !paginatedItems.value.length\n ? slots['no-data']?.()\n : slots.default?.(slotProps.value)\n }\n </div>\n )}\n </MaybeTransition>\n\n { slots.footer?.(slotProps.value) }\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VDataIterator = InstanceType<typeof VDataIterator>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VDataIterator.js","names":["VFadeTransition","makeDataTableExpandProps","provideExpanded","makeDataTableGroupProps","provideGroupBy","useGroupedItems","useOptions","createPagination","makeDataTablePaginateProps","providePagination","usePaginatedItems","makeDataTableSelectProps","provideSelection","createSort","makeDataTableSortProps","provideSort","useSortedItems","makeDataIteratorItemsProps","useDataIteratorItems","makeComponentProps","makeFilterProps","useFilter","LoaderSlot","useProxiedModel","makeTagProps","makeTransitionProps","MaybeTransition","computed","toRef","genericComponent","propsFactory","useRender","makeVDataIteratorProps","search","String","loading","Boolean","itemsPerPage","transition","component","hideOnLeave","VDataIterator","name","props","emits","value","setup","_ref","slots","groupBy","items","filteredItems","transform","item","raw","sortBy","multiSort","mustSort","page","toggleSort","sortByWithGroups","opened","extractRows","isGroupOpen","toggleGroup","sortedItems","flatItems","itemsLength","length","startIndex","stopIndex","pageCount","prevPage","nextPage","setItemsPerPage","setPage","paginatedItems","paginatedItemsWithoutGroups","isSelected","select","selectAll","toggleSelect","allItems","currentPage","isExpanded","toggleExpand","slotProps","itemsCount","groupedItems","_createVNode","tag","_normalizeClass","class","_normalizeStyle","style","default","header","loader","_createElementVNode","footer"],"sources":["../../../src/components/VDataIterator/VDataIterator.tsx"],"sourcesContent":["// Components\nimport { VFadeTransition } from '@/components/transitions'\nimport { makeDataTableExpandProps, provideExpanded } from '@/components/VDataTable/composables/expand'\nimport { makeDataTableGroupProps, provideGroupBy, useGroupedItems } from '@/components/VDataTable/composables/group'\nimport { useOptions } from '@/components/VDataTable/composables/options'\nimport {\n createPagination,\n makeDataTablePaginateProps,\n providePagination,\n usePaginatedItems,\n} from '@/components/VDataTable/composables/paginate'\nimport { makeDataTableSelectProps, provideSelection } from '@/components/VDataTable/composables/select'\nimport { createSort, makeDataTableSortProps, provideSort, useSortedItems } from '@/components/VDataTable/composables/sort'\n\n// Composables\nimport { makeDataIteratorItemsProps, useDataIteratorItems } from './composables/items'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { LoaderSlot } from '@/composables/loader'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Component } from 'vue'\nimport type { DataIteratorItem } from './composables/items'\nimport type { Group } from '@/components/VDataTable/composables/group'\nimport type { SortItem } from '@/components/VDataTable/composables/sort'\nimport type { LoaderSlotProps } from '@/composables/loader'\nimport type { GenericProps } from '@/util'\n\ntype VDataIteratorSlotProps<T> = {\n page: number\n itemsPerPage: number\n sortBy: readonly SortItem[]\n pageCount: number\n toggleSort: ReturnType<typeof provideSort>['toggleSort']\n prevPage: ReturnType<typeof providePagination>['prevPage']\n nextPage: ReturnType<typeof providePagination>['nextPage']\n setPage: ReturnType<typeof providePagination>['setPage']\n setItemsPerPage: ReturnType<typeof providePagination>['setItemsPerPage']\n isSelected: ReturnType<typeof provideSelection>['isSelected']\n select: ReturnType<typeof provideSelection>['select']\n selectAll: ReturnType<typeof provideSelection>['selectAll']\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n isGroupOpen: ReturnType<typeof provideGroupBy>['isGroupOpen']\n toggleGroup: ReturnType<typeof provideGroupBy>['toggleGroup']\n items: readonly DataIteratorItem<T>[]\n itemsCount: number\n groupedItems: readonly (DataIteratorItem<T> | Group<DataIteratorItem<T>>)[]\n}\n\nexport type VDataIteratorSlots<T> = {\n default: VDataIteratorSlotProps<T>\n header: VDataIteratorSlotProps<T>\n footer: VDataIteratorSlotProps<T>\n loader: LoaderSlotProps\n 'no-data': never\n}\n\nexport const makeVDataIteratorProps = propsFactory({\n search: String,\n loading: Boolean,\n\n ...makeComponentProps(),\n ...makeDataIteratorItemsProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeDataTablePaginateProps({ itemsPerPage: 5 }),\n ...makeDataTableExpandProps(),\n ...makeDataTableGroupProps(),\n ...makeFilterProps(),\n ...makeTagProps(),\n ...makeTransitionProps({\n transition: {\n component: VFadeTransition as Component,\n hideOnLeave: true,\n },\n }),\n}, 'VDataIterator')\n\nexport const VDataIterator = genericComponent<new <T> (\n props: {\n items?: readonly T[]\n },\n slots: VDataIteratorSlots<T>,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VDataIterator',\n\n props: makeVDataIteratorProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:groupBy': (value: any) => true,\n 'update:page': (value: number) => true,\n 'update:itemsPerPage': (value: number) => true,\n 'update:sortBy': (value: any) => true,\n 'update:options': (value: any) => true,\n 'update:expanded': (value: any) => true,\n 'update:currentItems': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const groupBy = useProxiedModel(props, 'groupBy')\n const search = toRef(() => props.search)\n\n const { items } = useDataIteratorItems(props)\n const { filteredItems } = useFilter(props, items, search, { transform: item => item.raw })\n\n const { sortBy, multiSort, mustSort } = createSort(props)\n const { page, itemsPerPage } = createPagination(props)\n\n const { toggleSort } = provideSort({ sortBy, multiSort, mustSort, page })\n const { sortByWithGroups, opened, extractRows, isGroupOpen, toggleGroup } = provideGroupBy({ groupBy, sortBy })\n\n const { sortedItems } = useSortedItems(props, filteredItems, sortByWithGroups, { transform: item => item.raw })\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n\n const itemsLength = toRef(() => flatItems.value.length)\n\n const {\n startIndex,\n stopIndex,\n pageCount,\n prevPage,\n nextPage,\n setItemsPerPage,\n setPage,\n } = providePagination({ page, itemsPerPage, itemsLength })\n const { paginatedItems } = usePaginatedItems({ items: flatItems, startIndex, stopIndex, itemsPerPage })\n\n const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value))\n\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n } = provideSelection(props, { allItems: items, currentPage: paginatedItemsWithoutGroups })\n const { isExpanded, toggleExpand } = provideExpanded(props)\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search,\n })\n\n const slotProps = computed(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n pageCount: pageCount.value,\n toggleSort,\n prevPage,\n nextPage,\n setPage,\n setItemsPerPage,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: paginatedItemsWithoutGroups.value,\n itemsCount: filteredItems.value.length,\n groupedItems: paginatedItems.value,\n }))\n\n useRender(() => (\n <props.tag\n class={[\n 'v-data-iterator',\n {\n 'v-data-iterator--loading': props.loading,\n },\n props.class,\n ]}\n style={ props.style }\n >\n { slots.header?.(slotProps.value) }\n\n <MaybeTransition transition={ props.transition }>\n { props.loading ? (\n <LoaderSlot key=\"loader\" name=\"v-data-iterator\" active>\n { slotProps => slots.loader?.(slotProps) }\n </LoaderSlot>\n ) : (\n <div key=\"items\">\n { !paginatedItems.value.length\n ? slots['no-data']?.()\n : slots.default?.(slotProps.value)\n }\n </div>\n )}\n </MaybeTransition>\n\n { slots.footer?.(slotProps.value) }\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VDataIterator = InstanceType<typeof VDataIterator>\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, mergeProps as _mergeProps } from "vue";
1
+ import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, Fragment as _Fragment, mergeProps as _mergeProps } from "vue";
2
2
  // Styles
3
3
  import "./VSkeletonLoader.css";
4
4
 
@@ -103,9 +103,11 @@ export const makeVSkeletonLoaderProps = propsFactory({
103
103
  }, 'VSkeletonLoader');
104
104
  export const VSkeletonLoader = genericComponent()({
105
105
  name: 'VSkeletonLoader',
106
+ inheritAttrs: false,
106
107
  props: makeVSkeletonLoaderProps(),
107
108
  setup(props, _ref) {
108
109
  let {
110
+ attrs,
109
111
  slots
110
112
  } = _ref;
111
113
  const {
@@ -132,12 +134,12 @@ export const VSkeletonLoader = genericComponent()({
132
134
  ariaLabel: t(props.loadingText),
133
135
  role: 'alert'
134
136
  };
135
- return _createElementVNode("div", _mergeProps({
137
+ return _createElementVNode(_Fragment, null, [isLoading ? _createElementVNode("div", _mergeProps({
136
138
  "class": ['v-skeleton-loader', {
137
139
  'v-skeleton-loader--boilerplate': props.boilerplate
138
140
  }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value],
139
- "style": [backgroundColorStyles.value, isLoading ? dimensionStyles.value : {}]
140
- }, loadingProps), [isLoading ? items.value : slots.default?.()]);
141
+ "style": [backgroundColorStyles.value, dimensionStyles.value]
142
+ }, loadingProps, attrs), [items.value]) : slots.default?.()]);
141
143
  });
142
144
  return {};
143
145
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VSkeletonLoader.js","names":["useBackgroundColor","makeDimensionProps","useDimension","makeElevationProps","useElevation","useLocale","makeThemeProps","provideTheme","computed","genericComponent","propsFactory","useRender","wrapInArray","rootTypes","actions","article","avatar","button","card","chip","divider","heading","image","ossein","paragraph","sentences","subtitle","table","text","genBone","type","children","arguments","length","undefined","_createElementVNode","_normalizeClass","genBones","bone","split","Array","from","map","genStructure","includes","mapBones","push","bones","replace","makeVSkeletonLoaderProps","boilerplate","Boolean","color","String","loading","loadingText","default","VSkeletonLoader","name","props","setup","_ref","slots","backgroundColorClasses","backgroundColorStyles","dimensionStyles","elevationClasses","themeClasses","t","items","join","isLoading","loadingProps","ariaLive","ariaLabel","role","_mergeProps","value"],"sources":["../../../src/components/VSkeletonLoader/VSkeletonLoader.tsx"],"sourcesContent":["// Styles\nimport './VSkeletonLoader.sass'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { useLocale } from '@/composables/locale'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType, VNode } from 'vue'\n\ntype VSkeletonBone<T> = T | VSkeletonBone<T>[]\n\nexport type VSkeletonBones = VSkeletonBone<VNode>\nexport type VSkeletonLoaderType = keyof typeof rootTypes\n\nexport const rootTypes = {\n actions: 'button@2',\n article: 'heading, paragraph',\n avatar: 'avatar',\n button: 'button',\n card: 'image, heading',\n 'card-avatar': 'image, list-item-avatar',\n chip: 'chip',\n 'date-picker': 'list-item, heading, divider, date-picker-options, date-picker-days, actions',\n 'date-picker-options': 'text, avatar@2',\n 'date-picker-days': 'avatar@28',\n divider: 'divider',\n heading: 'heading',\n image: 'image',\n 'list-item': 'text',\n 'list-item-avatar': 'avatar, text',\n 'list-item-two-line': 'sentences',\n 'list-item-avatar-two-line': 'avatar, sentences',\n 'list-item-three-line': 'paragraph',\n 'list-item-avatar-three-line': 'avatar, paragraph',\n ossein: 'ossein',\n paragraph: 'text@3',\n sentences: 'text@2',\n subtitle: 'text',\n table: 'table-heading, table-thead, table-tbody, table-tfoot',\n 'table-heading': 'chip, text',\n 'table-thead': 'heading@6',\n 'table-tbody': 'table-row-divider@6',\n 'table-row-divider': 'table-row, divider',\n 'table-row': 'text@6',\n 'table-tfoot': 'text@2, avatar@2',\n text: 'text',\n} as const\n\nfunction genBone (type: string, children: VSkeletonBones = []) {\n return (\n <div\n class={[\n 'v-skeleton-loader__bone',\n `v-skeleton-loader__${type}`,\n ]}\n >\n { children }\n </div>\n )\n}\n\nfunction genBones (bone: string) {\n // e.g. 'text@3'\n const [type, length] = bone.split('@') as [VSkeletonLoaderType, number]\n\n // Generate a length array based upon\n // value after @ in the bone string\n return Array.from({ length }).map(() => genStructure(type))\n}\n\nfunction genStructure (type?: string): VSkeletonBones {\n let children: VSkeletonBones = []\n\n if (!type) return children\n\n // TODO: figure out a better way to type this\n const bone = (rootTypes as Record<string, string>)[type]\n\n // End of recursion, do nothing\n /* eslint-disable-next-line no-empty, brace-style */\n if (type === bone) {}\n // Array of values - e.g. 'heading, paragraph, text@2'\n else if (type.includes(',')) return mapBones(type)\n // Array of values - e.g. 'paragraph@4'\n else if (type.includes('@')) return genBones(type)\n // Array of values - e.g. 'card@2'\n else if (bone.includes(',')) children = mapBones(bone)\n // Array of values - e.g. 'list-item@2'\n else if (bone.includes('@')) children = genBones(bone)\n // Single value - e.g. 'card-heading'\n else if (bone) children.push(genStructure(bone))\n\n return [genBone(type, children)]\n}\n\nfunction mapBones (bones: string) {\n // Remove spaces and return array of structures\n return bones.replace(/\\s/g, '').split(',').map(genStructure)\n}\n\nexport const makeVSkeletonLoaderProps = propsFactory({\n boilerplate: Boolean,\n color: String,\n loading: Boolean,\n loadingText: {\n type: String,\n default: '$vuetify.loading',\n },\n type: {\n type: [String, Array] as PropType<\n | VSkeletonLoaderType | (string & {})\n | ReadonlyArray<VSkeletonLoaderType | (string & {})>\n >,\n default: 'ossein',\n },\n\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeThemeProps(),\n}, 'VSkeletonLoader')\n\nexport const VSkeletonLoader = genericComponent()({\n name: 'VSkeletonLoader',\n\n props: makeVSkeletonLoaderProps(),\n\n setup (props, { slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.color)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { themeClasses } = provideTheme(props)\n const { t } = useLocale()\n\n const items = computed(() => genStructure(wrapInArray(props.type).join(',')))\n\n useRender(() => {\n const isLoading = !slots.default || props.loading\n const loadingProps = (props.boilerplate || !isLoading) ? {} : {\n ariaLive: 'polite',\n ariaLabel: t(props.loadingText),\n role: 'alert',\n }\n\n return (\n <div\n class={[\n 'v-skeleton-loader',\n {\n 'v-skeleton-loader--boilerplate': props.boilerplate,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n elevationClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n isLoading ? dimensionStyles.value : {},\n ]}\n { ...loadingProps }\n >\n { isLoading ? items.value : slots.default?.() }\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VSkeletonLoader = InstanceType<typeof VSkeletonLoader>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VSkeletonLoader.js","names":["useBackgroundColor","makeDimensionProps","useDimension","makeElevationProps","useElevation","useLocale","makeThemeProps","provideTheme","computed","genericComponent","propsFactory","useRender","wrapInArray","rootTypes","actions","article","avatar","button","card","chip","divider","heading","image","ossein","paragraph","sentences","subtitle","table","text","genBone","type","children","arguments","length","undefined","_createElementVNode","_normalizeClass","genBones","bone","split","Array","from","map","genStructure","includes","mapBones","push","bones","replace","makeVSkeletonLoaderProps","boilerplate","Boolean","color","String","loading","loadingText","default","VSkeletonLoader","name","inheritAttrs","props","setup","_ref","attrs","slots","backgroundColorClasses","backgroundColorStyles","dimensionStyles","elevationClasses","themeClasses","t","items","join","isLoading","loadingProps","ariaLive","ariaLabel","role","_Fragment","_mergeProps","value"],"sources":["../../../src/components/VSkeletonLoader/VSkeletonLoader.tsx"],"sourcesContent":["// Styles\nimport './VSkeletonLoader.sass'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { useLocale } from '@/composables/locale'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType, VNode } from 'vue'\n\ntype VSkeletonBone<T> = T | VSkeletonBone<T>[]\n\nexport type VSkeletonBones = VSkeletonBone<VNode>\nexport type VSkeletonLoaderType = keyof typeof rootTypes\n\nexport const rootTypes = {\n actions: 'button@2',\n article: 'heading, paragraph',\n avatar: 'avatar',\n button: 'button',\n card: 'image, heading',\n 'card-avatar': 'image, list-item-avatar',\n chip: 'chip',\n 'date-picker': 'list-item, heading, divider, date-picker-options, date-picker-days, actions',\n 'date-picker-options': 'text, avatar@2',\n 'date-picker-days': 'avatar@28',\n divider: 'divider',\n heading: 'heading',\n image: 'image',\n 'list-item': 'text',\n 'list-item-avatar': 'avatar, text',\n 'list-item-two-line': 'sentences',\n 'list-item-avatar-two-line': 'avatar, sentences',\n 'list-item-three-line': 'paragraph',\n 'list-item-avatar-three-line': 'avatar, paragraph',\n ossein: 'ossein',\n paragraph: 'text@3',\n sentences: 'text@2',\n subtitle: 'text',\n table: 'table-heading, table-thead, table-tbody, table-tfoot',\n 'table-heading': 'chip, text',\n 'table-thead': 'heading@6',\n 'table-tbody': 'table-row-divider@6',\n 'table-row-divider': 'table-row, divider',\n 'table-row': 'text@6',\n 'table-tfoot': 'text@2, avatar@2',\n text: 'text',\n} as const\n\nfunction genBone (type: string, children: VSkeletonBones = []) {\n return (\n <div\n class={[\n 'v-skeleton-loader__bone',\n `v-skeleton-loader__${type}`,\n ]}\n >\n { children }\n </div>\n )\n}\n\nfunction genBones (bone: string) {\n // e.g. 'text@3'\n const [type, length] = bone.split('@') as [VSkeletonLoaderType, number]\n\n // Generate a length array based upon\n // value after @ in the bone string\n return Array.from({ length }).map(() => genStructure(type))\n}\n\nfunction genStructure (type?: string): VSkeletonBones {\n let children: VSkeletonBones = []\n\n if (!type) return children\n\n // TODO: figure out a better way to type this\n const bone = (rootTypes as Record<string, string>)[type]\n\n // End of recursion, do nothing\n /* eslint-disable-next-line no-empty, brace-style */\n if (type === bone) {}\n // Array of values - e.g. 'heading, paragraph, text@2'\n else if (type.includes(',')) return mapBones(type)\n // Array of values - e.g. 'paragraph@4'\n else if (type.includes('@')) return genBones(type)\n // Array of values - e.g. 'card@2'\n else if (bone.includes(',')) children = mapBones(bone)\n // Array of values - e.g. 'list-item@2'\n else if (bone.includes('@')) children = genBones(bone)\n // Single value - e.g. 'card-heading'\n else if (bone) children.push(genStructure(bone))\n\n return [genBone(type, children)]\n}\n\nfunction mapBones (bones: string) {\n // Remove spaces and return array of structures\n return bones.replace(/\\s/g, '').split(',').map(genStructure)\n}\n\nexport const makeVSkeletonLoaderProps = propsFactory({\n boilerplate: Boolean,\n color: String,\n loading: Boolean,\n loadingText: {\n type: String,\n default: '$vuetify.loading',\n },\n type: {\n type: [String, Array] as PropType<\n | VSkeletonLoaderType | (string & {})\n | ReadonlyArray<VSkeletonLoaderType | (string & {})>\n >,\n default: 'ossein',\n },\n\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeThemeProps(),\n}, 'VSkeletonLoader')\n\nexport const VSkeletonLoader = genericComponent()({\n name: 'VSkeletonLoader',\n\n inheritAttrs: false,\n\n props: makeVSkeletonLoaderProps(),\n\n setup (props, { attrs, slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.color)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { themeClasses } = provideTheme(props)\n const { t } = useLocale()\n\n const items = computed(() => genStructure(wrapInArray(props.type).join(',')))\n\n useRender(() => {\n const isLoading = !slots.default || props.loading\n const loadingProps = (props.boilerplate || !isLoading) ? {} : {\n ariaLive: 'polite',\n ariaLabel: t(props.loadingText),\n role: 'alert',\n }\n\n return (\n <>\n { isLoading\n ? (\n <div\n class={[\n 'v-skeleton-loader',\n {\n 'v-skeleton-loader--boilerplate': props.boilerplate,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n elevationClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n dimensionStyles.value,\n ]}\n { ...loadingProps }\n { ...attrs }\n >\n { items.value }\n </div>\n )\n : slots.default?.()\n }\n </>\n )\n })\n\n return {}\n },\n})\n\nexport type VSkeletonLoader = InstanceType<typeof VSkeletonLoader>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,SAAS;AAAA,SACTC,cAAc,EAAEC,YAAY,sCAErC;AACA,SAASC,QAAQ,QAAQ,KAAK;AAAA,SACrBC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,EAAEC,WAAW,+BAE/D;AAQA,OAAO,MAAMC,SAAS,GAAG;EACvBC,OAAO,EAAE,UAAU;EACnBC,OAAO,EAAE,oBAAoB;EAC7BC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,gBAAgB;EACtB,aAAa,EAAE,yBAAyB;EACxCC,IAAI,EAAE,MAAM;EACZ,aAAa,EAAE,6EAA6E;EAC5F,qBAAqB,EAAE,gBAAgB;EACvC,kBAAkB,EAAE,WAAW;EAC/BC,OAAO,EAAE,SAAS;EAClBC,OAAO,EAAE,SAAS;EAClBC,KAAK,EAAE,OAAO;EACd,WAAW,EAAE,MAAM;EACnB,kBAAkB,EAAE,cAAc;EAClC,oBAAoB,EAAE,WAAW;EACjC,2BAA2B,EAAE,mBAAmB;EAChD,sBAAsB,EAAE,WAAW;EACnC,6BAA6B,EAAE,mBAAmB;EAClDC,MAAM,EAAE,QAAQ;EAChBC,SAAS,EAAE,QAAQ;EACnBC,SAAS,EAAE,QAAQ;EACnBC,QAAQ,EAAE,MAAM;EAChBC,KAAK,EAAE,sDAAsD;EAC7D,eAAe,EAAE,YAAY;EAC7B,aAAa,EAAE,WAAW;EAC1B,aAAa,EAAE,qBAAqB;EACpC,mBAAmB,EAAE,oBAAoB;EACzC,WAAW,EAAE,QAAQ;EACrB,aAAa,EAAE,kBAAkB;EACjCC,IAAI,EAAE;AACR,CAAU;AAEV,SAASC,OAAOA,CAAEC,IAAY,EAAiC;EAAA,IAA/BC,QAAwB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EAC3D,OAAAG,mBAAA;IAAA,SAAAC,eAAA,CAEW,CACL,yBAAyB,EACzB,sBAAsBN,IAAI,EAAE,CAC7B;EAAA,IAECC,QAAQ;AAGhB;AAEA,SAASM,QAAQA,CAAEC,IAAY,EAAE;EAC/B;EACA,MAAM,CAACR,IAAI,EAAEG,MAAM,CAAC,GAAGK,IAAI,CAACC,KAAK,CAAC,GAAG,CAAkC;;EAEvE;EACA;EACA,OAAOC,KAAK,CAACC,IAAI,CAAC;IAAER;EAAO,CAAC,CAAC,CAACS,GAAG,CAAC,MAAMC,YAAY,CAACb,IAAI,CAAC,CAAC;AAC7D;AAEA,SAASa,YAAYA,CAAEb,IAAa,EAAkB;EACpD,IAAIC,QAAwB,GAAG,EAAE;EAEjC,IAAI,CAACD,IAAI,EAAE,OAAOC,QAAQ;;EAE1B;EACA,MAAMO,IAAI,GAAIzB,SAAS,CAA4BiB,IAAI,CAAC;;EAExD;EACA;EACA,IAAIA,IAAI,KAAKQ,IAAI,EAAE,CAAC;EACpB;EAAA,KACK,IAAIR,IAAI,CAACc,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAOC,QAAQ,CAACf,IAAI,CAAC;EAClD;EAAA,KACK,IAAIA,IAAI,CAACc,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAOP,QAAQ,CAACP,IAAI,CAAC;EAClD;EAAA,KACK,IAAIQ,IAAI,CAACM,QAAQ,CAAC,GAAG,CAAC,EAAEb,QAAQ,GAAGc,QAAQ,CAACP,IAAI,CAAC;EACtD;EAAA,KACK,IAAIA,IAAI,CAACM,QAAQ,CAAC,GAAG,CAAC,EAAEb,QAAQ,GAAGM,QAAQ,CAACC,IAAI,CAAC;EACtD;EAAA,KACK,IAAIA,IAAI,EAAEP,QAAQ,CAACe,IAAI,CAACH,YAAY,CAACL,IAAI,CAAC,CAAC;EAEhD,OAAO,CAACT,OAAO,CAACC,IAAI,EAAEC,QAAQ,CAAC,CAAC;AAClC;AAEA,SAASc,QAAQA,CAAEE,KAAa,EAAE;EAChC;EACA,OAAOA,KAAK,CAACC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAACT,KAAK,CAAC,GAAG,CAAC,CAACG,GAAG,CAACC,YAAY,CAAC;AAC9D;AAEA,OAAO,MAAMM,wBAAwB,GAAGvC,YAAY,CAAC;EACnDwC,WAAW,EAAEC,OAAO;EACpBC,KAAK,EAAEC,MAAM;EACbC,OAAO,EAAEH,OAAO;EAChBI,WAAW,EAAE;IACXzB,IAAI,EAAEuB,MAAM;IACZG,OAAO,EAAE;EACX,CAAC;EACD1B,IAAI,EAAE;IACJA,IAAI,EAAE,CAACuB,MAAM,EAAEb,KAAK,CAGnB;IACDgB,OAAO,EAAE;EACX,CAAC;EAED,GAAGvD,kBAAkB,CAAC,CAAC;EACvB,GAAGE,kBAAkB,CAAC,CAAC;EACvB,GAAGG,cAAc,CAAC;AACpB,CAAC,EAAE,iBAAiB,CAAC;AAErB,OAAO,MAAMmD,eAAe,GAAGhD,gBAAgB,CAAC,CAAC,CAAC;EAChDiD,IAAI,EAAE,iBAAiB;EAEvBC,YAAY,EAAE,KAAK;EAEnBC,KAAK,EAAEX,wBAAwB,CAAC,CAAC;EAEjCY,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAoB;IAAA,IAAlB;MAAEC,KAAK;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC5B,MAAM;MAAEG,sBAAsB;MAAEC;IAAsB,CAAC,GAAGlE,kBAAkB,CAAC,MAAM4D,KAAK,CAACR,KAAK,CAAC;IAC/F,MAAM;MAAEe;IAAgB,CAAC,GAAGjE,YAAY,CAAC0D,KAAK,CAAC;IAC/C,MAAM;MAAEQ;IAAiB,CAAC,GAAGhE,YAAY,CAACwD,KAAK,CAAC;IAChD,MAAM;MAAES;IAAa,CAAC,GAAG9D,YAAY,CAACqD,KAAK,CAAC;IAC5C,MAAM;MAAEU;IAAE,CAAC,GAAGjE,SAAS,CAAC,CAAC;IAEzB,MAAMkE,KAAK,GAAG/D,QAAQ,CAAC,MAAMmC,YAAY,CAAC/B,WAAW,CAACgD,KAAK,CAAC9B,IAAI,CAAC,CAAC0C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAE7E7D,SAAS,CAAC,MAAM;MACd,MAAM8D,SAAS,GAAG,CAACT,KAAK,CAACR,OAAO,IAAII,KAAK,CAACN,OAAO;MACjD,MAAMoB,YAAY,GAAId,KAAK,CAACV,WAAW,IAAI,CAACuB,SAAS,GAAI,CAAC,CAAC,GAAG;QAC5DE,QAAQ,EAAE,QAAQ;QAClBC,SAAS,EAAEN,CAAC,CAACV,KAAK,CAACL,WAAW,CAAC;QAC/BsB,IAAI,EAAE;MACR,CAAC;MAED,OAAA1C,mBAAA,CAAA2C,SAAA,SAEML,SAAS,GAAAtC,mBAAA,QAAA4C,WAAA;QAAA,SAGE,CACL,mBAAmB,EACnB;UACE,gCAAgC,EAAEnB,KAAK,CAACV;QAC1C,CAAC,EACDmB,YAAY,CAACW,KAAK,EAClBf,sBAAsB,CAACe,KAAK,EAC5BZ,gBAAgB,CAACY,KAAK,CACvB;QAAA,SACM,CACLd,qBAAqB,CAACc,KAAK,EAC3Bb,eAAe,CAACa,KAAK;MACtB,GACIN,YAAY,EACZX,KAAK,IAERQ,KAAK,CAACS,KAAK,KAGfhB,KAAK,CAACR,OAAO,GAAG,CAAC;IAI3B,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC","ignoreList":[]}
@@ -11,7 +11,7 @@ import { makeTagProps } from "../../composables/tag.js";
11
11
  import { makeThemeProps, provideTheme } from "../../composables/theme.js"; // Directives
12
12
  import vTouch from "../../directives/touch/index.js"; // Utilities
13
13
  import { computed, provide, ref, shallowRef, toRef, watch } from 'vue';
14
- import { convertToUnit, genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types
14
+ import { convertToUnit, genericComponent, PREFERS_REDUCED_MOTION, propsFactory, useRender } from "../../util/index.js"; // Types
15
15
  export const VWindowSymbol = Symbol.for('vuetify:v-window');
16
16
  export const VWindowGroupSymbol = Symbol.for('vuetify:v-window-group');
17
17
  export const makeVWindowProps = propsFactory({
@@ -173,7 +173,7 @@ export const VWindow = genericComponent()({
173
173
  'v-window--vertical-arrows': !!props.verticalArrows,
174
174
  'v-window--crossfade': !!props.crossfade
175
175
  }, themeClasses.value, props.class]),
176
- "style": _normalizeStyle([props.style, props.transitionDuration ? {
176
+ "style": _normalizeStyle([props.style, props.transitionDuration && !PREFERS_REDUCED_MOTION ? {
177
177
  '--v-window-transition-duration': convertToUnit(props.transitionDuration, 'ms')
178
178
  } : undefined])
179
179
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"VWindow.js","names":["VBtn","makeComponentProps","useGroup","useLocale","useRtl","makeTagProps","makeThemeProps","provideTheme","vTouch","computed","provide","ref","shallowRef","toRef","watch","convertToUnit","genericComponent","propsFactory","useRender","VWindowSymbol","Symbol","for","VWindowGroupSymbol","makeVWindowProps","continuous","Boolean","nextIcon","type","String","Function","Object","default","prevIcon","reverse","showArrows","validator","v","verticalArrows","touch","undefined","direction","modelValue","disabled","selectedClass","mandatory","crossfade","transitionDuration","Number","VWindow","name","directives","props","emits","value","setup","_ref","slots","themeClasses","isRtl","t","group","rootRef","isRtlReverse","isReversed","transition","axis","transitionCount","transitionHeight","activeIndex","items","findIndex","item","selected","includes","id","newVal","oldVal","itemsLength","length","lastIndex","canMoveBack","canMoveForward","prev","next","arrows","prevProps","icon","class","onClick","push","_createVNode","_createElementVNode","nextProps","touchOptions","options","left","right","start","_ref2","originalEvent","stopPropagation","_withDirectives","tag","_normalizeClass","_normalizeStyle","style","height","additional"],"sources":["../../../src/components/VWindow/VWindow.tsx"],"sourcesContent":["// Styles\nimport './VWindow.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { useGroup } from '@/composables/group'\nimport { useLocale, useRtl } from '@/composables/locale'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Directives\nimport vTouch from '@/directives/touch'\n\n// Utilities\nimport { computed, provide, ref, shallowRef, toRef, watch } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef, InjectionKey, PropType, Ref } from 'vue'\nimport type { GroupItemProvide, GroupProvide } from '@/composables/group'\nimport type { IconValue } from '@/composables/icons'\nimport type { TouchHandlers } from '@/directives/touch'\nimport type { GenericProps } from '@/util'\n\nexport type VWindowSlots = {\n default: { group: GroupProvide }\n additional: { group: GroupProvide }\n prev: { props: ControlProps }\n next: { props: ControlProps }\n}\n\ntype WindowProvide = {\n transition: ComputedRef<undefined | string>\n transitionCount: Ref<number>\n transitionHeight: Ref<undefined | string>\n isReversed: Ref<boolean>\n rootRef: Ref<HTMLElement | undefined>\n}\n\ntype ControlProps = {\n icon: IconValue\n class: string\n onClick: () => void\n 'aria-label': string\n}\n\nexport const VWindowSymbol: InjectionKey<WindowProvide> = Symbol.for('vuetify:v-window')\nexport const VWindowGroupSymbol: InjectionKey<GroupItemProvide> = Symbol.for('vuetify:v-window-group')\n\nexport const makeVWindowProps = propsFactory({\n continuous: Boolean,\n nextIcon: {\n type: [Boolean, String, Function, Object] as PropType<IconValue>,\n default: '$next',\n },\n prevIcon: {\n type: [Boolean, String, Function, Object] as PropType<IconValue>,\n default: '$prev',\n },\n reverse: Boolean,\n showArrows: {\n type: [Boolean, String],\n validator: (v: any) => typeof v === 'boolean' || v === 'hover',\n },\n verticalArrows: [Boolean, String] as PropType<boolean | 'left' | 'right'>,\n touch: {\n type: [Object, Boolean] as PropType<boolean | TouchHandlers>,\n default: undefined,\n },\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n\n modelValue: null,\n disabled: Boolean,\n selectedClass: {\n type: String,\n default: 'v-window-item--active',\n },\n // TODO: mandatory should probably not be exposed but do this for now\n mandatory: {\n type: [Boolean, String] as PropType<boolean | 'force'>,\n default: 'force' as const,\n },\n crossfade: Boolean,\n transitionDuration: Number,\n\n ...makeComponentProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VWindow')\n\nexport const VWindow = genericComponent<new <T>(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VWindowSlots,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VWindow',\n\n directives: { vTouch },\n\n props: makeVWindowProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { isRtl } = useRtl()\n const { t } = useLocale()\n\n const group = useGroup(props, VWindowGroupSymbol)\n\n const rootRef = ref()\n const isRtlReverse = computed(() => isRtl.value ? !props.reverse : props.reverse)\n const isReversed = shallowRef(false)\n const transition = computed(() => {\n if (props.crossfade) {\n return 'v-window-crossfade-transition'\n }\n\n const axis = props.direction === 'vertical' ? 'y' : 'x'\n const reverse = isRtlReverse.value ? !isReversed.value : isReversed.value\n const direction = reverse ? '-reverse' : ''\n\n return `v-window-${axis}${direction}-transition`\n })\n const transitionCount = shallowRef(0)\n const transitionHeight = ref<undefined | string>(undefined)\n\n const activeIndex = computed(() => {\n return group.items.value.findIndex(item => group.selected.value.includes(item.id))\n })\n\n watch(activeIndex, (newVal, oldVal) => {\n const itemsLength = group.items.value.length\n const lastIndex = itemsLength - 1\n\n if (itemsLength <= 2) {\n isReversed.value = newVal < oldVal\n } else if (newVal === lastIndex && oldVal === 0) {\n isReversed.value = true\n } else if (newVal === 0 && oldVal === lastIndex) {\n isReversed.value = false\n } else {\n isReversed.value = newVal < oldVal\n }\n })\n\n provide(VWindowSymbol, {\n transition,\n isReversed,\n transitionCount,\n transitionHeight,\n rootRef,\n })\n\n const canMoveBack = toRef(() => props.continuous || activeIndex.value !== 0)\n const canMoveForward = toRef(() => props.continuous || activeIndex.value !== group.items.value.length - 1)\n\n function prev () {\n canMoveBack.value && group.prev()\n }\n\n function next () {\n canMoveForward.value && group.next()\n }\n\n const arrows = computed(() => {\n const arrows = []\n\n const prevProps = {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n class: `v-window__${isRtlReverse.value ? 'right' : 'left'}`,\n onClick: group.prev,\n 'aria-label': t('$vuetify.carousel.prev'),\n }\n\n arrows.push(canMoveBack.value\n ? slots.prev\n ? slots.prev({ props: prevProps })\n : <VBtn { ...prevProps } />\n : <div />\n )\n\n const nextProps = {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n class: `v-window__${isRtlReverse.value ? 'left' : 'right'}`,\n onClick: group.next,\n 'aria-label': t('$vuetify.carousel.next'),\n }\n\n arrows.push(canMoveForward.value\n ? slots.next\n ? slots.next({ props: nextProps })\n : <VBtn { ...nextProps } />\n : <div />\n )\n\n return arrows\n })\n\n const touchOptions = computed(() => {\n if (props.touch === false) return props.touch\n\n const options: TouchHandlers = {\n left: () => {\n isRtlReverse.value ? prev() : next()\n },\n right: () => {\n isRtlReverse.value ? next() : prev()\n },\n start: ({ originalEvent }) => {\n originalEvent.stopPropagation()\n },\n }\n\n return {\n ...options,\n ...(props.touch === true ? {} : props.touch),\n }\n })\n\n useRender(() => (\n <props.tag\n ref={ rootRef }\n class={[\n 'v-window',\n {\n 'v-window--show-arrows-on-hover': props.showArrows === 'hover',\n 'v-window--vertical-arrows': !!props.verticalArrows,\n 'v-window--crossfade': !!props.crossfade,\n },\n themeClasses.value,\n props.class,\n ]}\n style={[\n props.style,\n props.transitionDuration\n ? { '--v-window-transition-duration': convertToUnit(props.transitionDuration, 'ms') }\n : undefined,\n ]}\n v-touch={ touchOptions.value }\n >\n <div\n class=\"v-window__container\"\n style={{\n height: transitionHeight.value,\n }}\n >\n { slots.default?.({ group }) }\n\n { props.showArrows !== false && (\n <div\n class={[\n 'v-window__controls',\n { 'v-window__controls--left': props.verticalArrows === 'left' || props.verticalArrows === true },\n { 'v-window__controls--right': props.verticalArrows === 'right' },\n ]}\n >\n { arrows.value }\n </div>\n )}\n </div>\n\n { slots.additional?.({ group }) }\n </props.tag>\n ))\n\n return {\n group,\n }\n },\n})\n\nexport type VWindow = InstanceType<typeof VWindow>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VWindow.js","names":["VBtn","makeComponentProps","useGroup","useLocale","useRtl","makeTagProps","makeThemeProps","provideTheme","vTouch","computed","provide","ref","shallowRef","toRef","watch","convertToUnit","genericComponent","PREFERS_REDUCED_MOTION","propsFactory","useRender","VWindowSymbol","Symbol","for","VWindowGroupSymbol","makeVWindowProps","continuous","Boolean","nextIcon","type","String","Function","Object","default","prevIcon","reverse","showArrows","validator","v","verticalArrows","touch","undefined","direction","modelValue","disabled","selectedClass","mandatory","crossfade","transitionDuration","Number","VWindow","name","directives","props","emits","value","setup","_ref","slots","themeClasses","isRtl","t","group","rootRef","isRtlReverse","isReversed","transition","axis","transitionCount","transitionHeight","activeIndex","items","findIndex","item","selected","includes","id","newVal","oldVal","itemsLength","length","lastIndex","canMoveBack","canMoveForward","prev","next","arrows","prevProps","icon","class","onClick","push","_createVNode","_createElementVNode","nextProps","touchOptions","options","left","right","start","_ref2","originalEvent","stopPropagation","_withDirectives","tag","_normalizeClass","_normalizeStyle","style","height","additional"],"sources":["../../../src/components/VWindow/VWindow.tsx"],"sourcesContent":["// Styles\nimport './VWindow.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { useGroup } from '@/composables/group'\nimport { useLocale, useRtl } from '@/composables/locale'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Directives\nimport vTouch from '@/directives/touch'\n\n// Utilities\nimport { computed, provide, ref, shallowRef, toRef, watch } from 'vue'\nimport { convertToUnit, genericComponent, PREFERS_REDUCED_MOTION, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef, InjectionKey, PropType, Ref } from 'vue'\nimport type { GroupItemProvide, GroupProvide } from '@/composables/group'\nimport type { IconValue } from '@/composables/icons'\nimport type { TouchHandlers } from '@/directives/touch'\nimport type { GenericProps } from '@/util'\n\nexport type VWindowSlots = {\n default: { group: GroupProvide }\n additional: { group: GroupProvide }\n prev: { props: ControlProps }\n next: { props: ControlProps }\n}\n\ntype WindowProvide = {\n transition: ComputedRef<undefined | string>\n transitionCount: Ref<number>\n transitionHeight: Ref<undefined | string>\n isReversed: Ref<boolean>\n rootRef: Ref<HTMLElement | undefined>\n}\n\ntype ControlProps = {\n icon: IconValue\n class: string\n onClick: () => void\n 'aria-label': string\n}\n\nexport const VWindowSymbol: InjectionKey<WindowProvide> = Symbol.for('vuetify:v-window')\nexport const VWindowGroupSymbol: InjectionKey<GroupItemProvide> = Symbol.for('vuetify:v-window-group')\n\nexport const makeVWindowProps = propsFactory({\n continuous: Boolean,\n nextIcon: {\n type: [Boolean, String, Function, Object] as PropType<IconValue>,\n default: '$next',\n },\n prevIcon: {\n type: [Boolean, String, Function, Object] as PropType<IconValue>,\n default: '$prev',\n },\n reverse: Boolean,\n showArrows: {\n type: [Boolean, String],\n validator: (v: any) => typeof v === 'boolean' || v === 'hover',\n },\n verticalArrows: [Boolean, String] as PropType<boolean | 'left' | 'right'>,\n touch: {\n type: [Object, Boolean] as PropType<boolean | TouchHandlers>,\n default: undefined,\n },\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n\n modelValue: null,\n disabled: Boolean,\n selectedClass: {\n type: String,\n default: 'v-window-item--active',\n },\n // TODO: mandatory should probably not be exposed but do this for now\n mandatory: {\n type: [Boolean, String] as PropType<boolean | 'force'>,\n default: 'force' as const,\n },\n crossfade: Boolean,\n transitionDuration: Number,\n\n ...makeComponentProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VWindow')\n\nexport const VWindow = genericComponent<new <T>(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VWindowSlots,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VWindow',\n\n directives: { vTouch },\n\n props: makeVWindowProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { isRtl } = useRtl()\n const { t } = useLocale()\n\n const group = useGroup(props, VWindowGroupSymbol)\n\n const rootRef = ref()\n const isRtlReverse = computed(() => isRtl.value ? !props.reverse : props.reverse)\n const isReversed = shallowRef(false)\n const transition = computed(() => {\n if (props.crossfade) {\n return 'v-window-crossfade-transition'\n }\n\n const axis = props.direction === 'vertical' ? 'y' : 'x'\n const reverse = isRtlReverse.value ? !isReversed.value : isReversed.value\n const direction = reverse ? '-reverse' : ''\n\n return `v-window-${axis}${direction}-transition`\n })\n const transitionCount = shallowRef(0)\n const transitionHeight = ref<undefined | string>(undefined)\n\n const activeIndex = computed(() => {\n return group.items.value.findIndex(item => group.selected.value.includes(item.id))\n })\n\n watch(activeIndex, (newVal, oldVal) => {\n const itemsLength = group.items.value.length\n const lastIndex = itemsLength - 1\n\n if (itemsLength <= 2) {\n isReversed.value = newVal < oldVal\n } else if (newVal === lastIndex && oldVal === 0) {\n isReversed.value = true\n } else if (newVal === 0 && oldVal === lastIndex) {\n isReversed.value = false\n } else {\n isReversed.value = newVal < oldVal\n }\n })\n\n provide(VWindowSymbol, {\n transition,\n isReversed,\n transitionCount,\n transitionHeight,\n rootRef,\n })\n\n const canMoveBack = toRef(() => props.continuous || activeIndex.value !== 0)\n const canMoveForward = toRef(() => props.continuous || activeIndex.value !== group.items.value.length - 1)\n\n function prev () {\n canMoveBack.value && group.prev()\n }\n\n function next () {\n canMoveForward.value && group.next()\n }\n\n const arrows = computed(() => {\n const arrows = []\n\n const prevProps = {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n class: `v-window__${isRtlReverse.value ? 'right' : 'left'}`,\n onClick: group.prev,\n 'aria-label': t('$vuetify.carousel.prev'),\n }\n\n arrows.push(canMoveBack.value\n ? slots.prev\n ? slots.prev({ props: prevProps })\n : <VBtn { ...prevProps } />\n : <div />\n )\n\n const nextProps = {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n class: `v-window__${isRtlReverse.value ? 'left' : 'right'}`,\n onClick: group.next,\n 'aria-label': t('$vuetify.carousel.next'),\n }\n\n arrows.push(canMoveForward.value\n ? slots.next\n ? slots.next({ props: nextProps })\n : <VBtn { ...nextProps } />\n : <div />\n )\n\n return arrows\n })\n\n const touchOptions = computed(() => {\n if (props.touch === false) return props.touch\n\n const options: TouchHandlers = {\n left: () => {\n isRtlReverse.value ? prev() : next()\n },\n right: () => {\n isRtlReverse.value ? next() : prev()\n },\n start: ({ originalEvent }) => {\n originalEvent.stopPropagation()\n },\n }\n\n return {\n ...options,\n ...(props.touch === true ? {} : props.touch),\n }\n })\n\n useRender(() => (\n <props.tag\n ref={ rootRef }\n class={[\n 'v-window',\n {\n 'v-window--show-arrows-on-hover': props.showArrows === 'hover',\n 'v-window--vertical-arrows': !!props.verticalArrows,\n 'v-window--crossfade': !!props.crossfade,\n },\n themeClasses.value,\n props.class,\n ]}\n style={[\n props.style,\n props.transitionDuration && !PREFERS_REDUCED_MOTION\n ? { '--v-window-transition-duration': convertToUnit(props.transitionDuration, 'ms') }\n : undefined,\n ]}\n v-touch={ touchOptions.value }\n >\n <div\n class=\"v-window__container\"\n style={{\n height: transitionHeight.value,\n }}\n >\n { slots.default?.({ group }) }\n\n { props.showArrows !== false && (\n <div\n class={[\n 'v-window__controls',\n { 'v-window__controls--left': props.verticalArrows === 'left' || props.verticalArrows === true },\n { 'v-window__controls--right': props.verticalArrows === 'right' },\n ]}\n >\n { arrows.value }\n </div>\n )}\n </div>\n\n { slots.additional?.({ group }) }\n </props.tag>\n ))\n\n return {\n group,\n }\n },\n})\n\nexport type VWindow = InstanceType<typeof VWindow>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,IAAI,4BAEb;AAAA,SACSC,kBAAkB;AAAA,SAClBC,QAAQ;AAAA,SACRC,SAAS,EAAEC,MAAM;AAAA,SACjBC,YAAY;AAAA,SACZC,cAAc,EAAEC,YAAY,sCAErC;AAAA,OACOC,MAAM,yCAEb;AACA,SAASC,QAAQ,EAAEC,OAAO,EAAEC,GAAG,EAAEC,UAAU,EAAEC,KAAK,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAC7DC,aAAa,EAAEC,gBAAgB,EAAEC,sBAAsB,EAAEC,YAAY,EAAEC,SAAS,+BAEzF;AA6BA,OAAO,MAAMC,aAA0C,GAAGC,MAAM,CAACC,GAAG,CAAC,kBAAkB,CAAC;AACxF,OAAO,MAAMC,kBAAkD,GAAGF,MAAM,CAACC,GAAG,CAAC,wBAAwB,CAAC;AAEtG,OAAO,MAAME,gBAAgB,GAAGN,YAAY,CAAC;EAC3CO,UAAU,EAAEC,OAAO;EACnBC,QAAQ,EAAE;IACRC,IAAI,EAAE,CAACF,OAAO,EAAEG,MAAM,EAAEC,QAAQ,EAAEC,MAAM,CAAwB;IAChEC,OAAO,EAAE;EACX,CAAC;EACDC,QAAQ,EAAE;IACRL,IAAI,EAAE,CAACF,OAAO,EAAEG,MAAM,EAAEC,QAAQ,EAAEC,MAAM,CAAwB;IAChEC,OAAO,EAAE;EACX,CAAC;EACDE,OAAO,EAAER,OAAO;EAChBS,UAAU,EAAE;IACVP,IAAI,EAAE,CAACF,OAAO,EAAEG,MAAM,CAAC;IACvBO,SAAS,EAAGC,CAAM,IAAK,OAAOA,CAAC,KAAK,SAAS,IAAIA,CAAC,KAAK;EACzD,CAAC;EACDC,cAAc,EAAE,CAACZ,OAAO,EAAEG,MAAM,CAAyC;EACzEU,KAAK,EAAE;IACLX,IAAI,EAAE,CAACG,MAAM,EAAEL,OAAO,CAAsC;IAC5DM,OAAO,EAAEQ;EACX,CAAC;EACDC,SAAS,EAAE;IACTb,IAAI,EAAEC,MAA6C;IACnDG,OAAO,EAAE;EACX,CAAC;EAEDU,UAAU,EAAE,IAAI;EAChBC,QAAQ,EAAEjB,OAAO;EACjBkB,aAAa,EAAE;IACbhB,IAAI,EAAEC,MAAM;IACZG,OAAO,EAAE;EACX,CAAC;EACD;EACAa,SAAS,EAAE;IACTjB,IAAI,EAAE,CAACF,OAAO,EAAEG,MAAM,CAAgC;IACtDG,OAAO,EAAE;EACX,CAAC;EACDc,SAAS,EAAEpB,OAAO;EAClBqB,kBAAkB,EAAEC,MAAM;EAE1B,GAAG/C,kBAAkB,CAAC,CAAC;EACvB,GAAGI,YAAY,CAAC,CAAC;EACjB,GAAGC,cAAc,CAAC;AACpB,CAAC,EAAE,SAAS,CAAC;AAEb,OAAO,MAAM2C,OAAO,GAAGjC,gBAAgB,CAMQ,CAAC,CAAC;EAC/CkC,IAAI,EAAE,SAAS;EAEfC,UAAU,EAAE;IAAE3C;EAAO,CAAC;EAEtB4C,KAAK,EAAE5B,gBAAgB,CAAC,CAAC;EAEzB6B,KAAK,EAAE;IACL,mBAAmB,EAAGC,KAAU,IAAK;EACvC,CAAC;EAEDC,KAAKA,CAAEH,KAAK,EAAAI,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAEE;IAAa,CAAC,GAAGnD,YAAY,CAAC6C,KAAK,CAAC;IAC5C,MAAM;MAAEO;IAAM,CAAC,GAAGvD,MAAM,CAAC,CAAC;IAC1B,MAAM;MAAEwD;IAAE,CAAC,GAAGzD,SAAS,CAAC,CAAC;IAEzB,MAAM0D,KAAK,GAAG3D,QAAQ,CAACkD,KAAK,EAAE7B,kBAAkB,CAAC;IAEjD,MAAMuC,OAAO,GAAGnD,GAAG,CAAC,CAAC;IACrB,MAAMoD,YAAY,GAAGtD,QAAQ,CAAC,MAAMkD,KAAK,CAACL,KAAK,GAAG,CAACF,KAAK,CAAClB,OAAO,GAAGkB,KAAK,CAAClB,OAAO,CAAC;IACjF,MAAM8B,UAAU,GAAGpD,UAAU,CAAC,KAAK,CAAC;IACpC,MAAMqD,UAAU,GAAGxD,QAAQ,CAAC,MAAM;MAChC,IAAI2C,KAAK,CAACN,SAAS,EAAE;QACnB,OAAO,+BAA+B;MACxC;MAEA,MAAMoB,IAAI,GAAGd,KAAK,CAACX,SAAS,KAAK,UAAU,GAAG,GAAG,GAAG,GAAG;MACvD,MAAMP,OAAO,GAAG6B,YAAY,CAACT,KAAK,GAAG,CAACU,UAAU,CAACV,KAAK,GAAGU,UAAU,CAACV,KAAK;MACzE,MAAMb,SAAS,GAAGP,OAAO,GAAG,UAAU,GAAG,EAAE;MAE3C,OAAO,YAAYgC,IAAI,GAAGzB,SAAS,aAAa;IAClD,CAAC,CAAC;IACF,MAAM0B,eAAe,GAAGvD,UAAU,CAAC,CAAC,CAAC;IACrC,MAAMwD,gBAAgB,GAAGzD,GAAG,CAAqB6B,SAAS,CAAC;IAE3D,MAAM6B,WAAW,GAAG5D,QAAQ,CAAC,MAAM;MACjC,OAAOoD,KAAK,CAACS,KAAK,CAAChB,KAAK,CAACiB,SAAS,CAACC,IAAI,IAAIX,KAAK,CAACY,QAAQ,CAACnB,KAAK,CAACoB,QAAQ,CAACF,IAAI,CAACG,EAAE,CAAC,CAAC;IACpF,CAAC,CAAC;IAEF7D,KAAK,CAACuD,WAAW,EAAE,CAACO,MAAM,EAAEC,MAAM,KAAK;MACrC,MAAMC,WAAW,GAAGjB,KAAK,CAACS,KAAK,CAAChB,KAAK,CAACyB,MAAM;MAC5C,MAAMC,SAAS,GAAGF,WAAW,GAAG,CAAC;MAEjC,IAAIA,WAAW,IAAI,CAAC,EAAE;QACpBd,UAAU,CAACV,KAAK,GAAGsB,MAAM,GAAGC,MAAM;MACpC,CAAC,MAAM,IAAID,MAAM,KAAKI,SAAS,IAAIH,MAAM,KAAK,CAAC,EAAE;QAC/Cb,UAAU,CAACV,KAAK,GAAG,IAAI;MACzB,CAAC,MAAM,IAAIsB,MAAM,KAAK,CAAC,IAAIC,MAAM,KAAKG,SAAS,EAAE;QAC/ChB,UAAU,CAACV,KAAK,GAAG,KAAK;MAC1B,CAAC,MAAM;QACLU,UAAU,CAACV,KAAK,GAAGsB,MAAM,GAAGC,MAAM;MACpC;IACF,CAAC,CAAC;IAEFnE,OAAO,CAACU,aAAa,EAAE;MACrB6C,UAAU;MACVD,UAAU;MACVG,eAAe;MACfC,gBAAgB;MAChBN;IACF,CAAC,CAAC;IAEF,MAAMmB,WAAW,GAAGpE,KAAK,CAAC,MAAMuC,KAAK,CAAC3B,UAAU,IAAI4C,WAAW,CAACf,KAAK,KAAK,CAAC,CAAC;IAC5E,MAAM4B,cAAc,GAAGrE,KAAK,CAAC,MAAMuC,KAAK,CAAC3B,UAAU,IAAI4C,WAAW,CAACf,KAAK,KAAKO,KAAK,CAACS,KAAK,CAAChB,KAAK,CAACyB,MAAM,GAAG,CAAC,CAAC;IAE1G,SAASI,IAAIA,CAAA,EAAI;MACfF,WAAW,CAAC3B,KAAK,IAAIO,KAAK,CAACsB,IAAI,CAAC,CAAC;IACnC;IAEA,SAASC,IAAIA,CAAA,EAAI;MACfF,cAAc,CAAC5B,KAAK,IAAIO,KAAK,CAACuB,IAAI,CAAC,CAAC;IACtC;IAEA,MAAMC,MAAM,GAAG5E,QAAQ,CAAC,MAAM;MAC5B,MAAM4E,MAAM,GAAG,EAAE;MAEjB,MAAMC,SAAS,GAAG;QAChBC,IAAI,EAAE5B,KAAK,CAACL,KAAK,GAAGF,KAAK,CAACzB,QAAQ,GAAGyB,KAAK,CAACnB,QAAQ;QACnDuD,KAAK,EAAE,aAAazB,YAAY,CAACT,KAAK,GAAG,OAAO,GAAG,MAAM,EAAE;QAC3DmC,OAAO,EAAE5B,KAAK,CAACsB,IAAI;QACnB,YAAY,EAAEvB,CAAC,CAAC,wBAAwB;MAC1C,CAAC;MAEDyB,MAAM,CAACK,IAAI,CAACT,WAAW,CAAC3B,KAAK,GACzBG,KAAK,CAAC0B,IAAI,GACR1B,KAAK,CAAC0B,IAAI,CAAC;QAAE/B,KAAK,EAAEkC;MAAU,CAAC,CAAC,GAAAK,YAAA,CAAA3F,IAAA,EACrBsF,SAAS,OAAK,GAAAM,mBAAA,mBAE/B,CAAC;MAED,MAAMC,SAAS,GAAG;QAChBN,IAAI,EAAE5B,KAAK,CAACL,KAAK,GAAGF,KAAK,CAACnB,QAAQ,GAAGmB,KAAK,CAACzB,QAAQ;QACnD6D,KAAK,EAAE,aAAazB,YAAY,CAACT,KAAK,GAAG,MAAM,GAAG,OAAO,EAAE;QAC3DmC,OAAO,EAAE5B,KAAK,CAACuB,IAAI;QACnB,YAAY,EAAExB,CAAC,CAAC,wBAAwB;MAC1C,CAAC;MAEDyB,MAAM,CAACK,IAAI,CAACR,cAAc,CAAC5B,KAAK,GAC5BG,KAAK,CAAC2B,IAAI,GACR3B,KAAK,CAAC2B,IAAI,CAAC;QAAEhC,KAAK,EAAEyC;MAAU,CAAC,CAAC,GAAAF,YAAA,CAAA3F,IAAA,EACrB6F,SAAS,OAAK,GAAAD,mBAAA,mBAE/B,CAAC;MAED,OAAOP,MAAM;IACf,CAAC,CAAC;IAEF,MAAMS,YAAY,GAAGrF,QAAQ,CAAC,MAAM;MAClC,IAAI2C,KAAK,CAACb,KAAK,KAAK,KAAK,EAAE,OAAOa,KAAK,CAACb,KAAK;MAE7C,MAAMwD,OAAsB,GAAG;QAC7BC,IAAI,EAAEA,CAAA,KAAM;UACVjC,YAAY,CAACT,KAAK,GAAG6B,IAAI,CAAC,CAAC,GAAGC,IAAI,CAAC,CAAC;QACtC,CAAC;QACDa,KAAK,EAAEA,CAAA,KAAM;UACXlC,YAAY,CAACT,KAAK,GAAG8B,IAAI,CAAC,CAAC,GAAGD,IAAI,CAAC,CAAC;QACtC,CAAC;QACDe,KAAK,EAAEC,KAAA,IAAuB;UAAA,IAAtB;YAAEC;UAAc,CAAC,GAAAD,KAAA;UACvBC,aAAa,CAACC,eAAe,CAAC,CAAC;QACjC;MACF,CAAC;MAED,OAAO;QACL,GAAGN,OAAO;QACV,IAAI3C,KAAK,CAACb,KAAK,KAAK,IAAI,GAAG,CAAC,CAAC,GAAGa,KAAK,CAACb,KAAK;MAC7C,CAAC;IACH,CAAC,CAAC;IAEFpB,SAAS,CAAC,MAAAmF,eAAA,CAAAX,YAAA,CAAAvC,KAAA,CAAAmD,GAAA;MAAA,OAEAzC,OAAO;MAAA,SAAA0C,eAAA,CACN,CACL,UAAU,EACV;QACE,gCAAgC,EAAEpD,KAAK,CAACjB,UAAU,KAAK,OAAO;QAC9D,2BAA2B,EAAE,CAAC,CAACiB,KAAK,CAACd,cAAc;QACnD,qBAAqB,EAAE,CAAC,CAACc,KAAK,CAACN;MACjC,CAAC,EACDY,YAAY,CAACJ,KAAK,EAClBF,KAAK,CAACoC,KAAK,CACZ;MAAA,SAAAiB,eAAA,CACM,CACLrD,KAAK,CAACsD,KAAK,EACXtD,KAAK,CAACL,kBAAkB,IAAI,CAAC9B,sBAAsB,GAC/C;QAAE,gCAAgC,EAAEF,aAAa,CAACqC,KAAK,CAACL,kBAAkB,EAAE,IAAI;MAAE,CAAC,GACnFP,SAAS,CACd;IAAA;MAAAR,OAAA,EAAAA,CAAA,MAAA4D,mBAAA;QAAA;QAAA,SAKQ;UACLe,MAAM,EAAEvC,gBAAgB,CAACd;QAC3B;MAAC,IAECG,KAAK,CAACzB,OAAO,GAAG;QAAE6B;MAAM,CAAC,CAAC,EAE1BT,KAAK,CAACjB,UAAU,KAAK,KAAK,IAAAyD,mBAAA;QAAA,SAAAY,eAAA,CAEjB,CACL,oBAAoB,EACpB;UAAE,0BAA0B,EAAEpD,KAAK,CAACd,cAAc,KAAK,MAAM,IAAIc,KAAK,CAACd,cAAc,KAAK;QAAK,CAAC,EAChG;UAAE,2BAA2B,EAAEc,KAAK,CAACd,cAAc,KAAK;QAAQ,CAAC,CAClE;MAAA,IAEC+C,MAAM,CAAC/B,KAAK,EAEjB,IAGDG,KAAK,CAACmD,UAAU,GAAG;QAAE/C;MAAM,CAAC,CAAC;IAAA,MAAArD,MAAA,EAvBrBsF,YAAY,CAACxC,KAAK,GAyB/B,CAAC;IAEF,OAAO;MACLO;IACF,CAAC;EACH;AACF,CAAC,CAAC","ignoreList":[]}
@@ -16,7 +16,7 @@ export const createVuetify = function () {
16
16
  ...options
17
17
  });
18
18
  };
19
- export const version = "3.9.3-dev.2025-08-01";
19
+ export const version = "3.9.3-dev.2025-08-02";
20
20
  createVuetify.version = version;
21
21
  export { blueprints, components, directives };
22
22
  export * from "./composables/index.js";
@@ -2625,48 +2625,41 @@ declare module 'vue' {
2625
2625
  $children?: VNodeChild
2626
2626
  }
2627
2627
  export interface GlobalComponents {
2628
+ VApp: typeof import('vuetify/components')['VApp']
2628
2629
  VAppBar: typeof import('vuetify/components')['VAppBar']
2629
2630
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
2630
2631
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
2631
- VApp: typeof import('vuetify/components')['VApp']
2632
- VAvatar: typeof import('vuetify/components')['VAvatar']
2633
- VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
2634
- VBadge: typeof import('vuetify/components')['VBadge']
2635
2632
  VAlert: typeof import('vuetify/components')['VAlert']
2636
2633
  VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
2634
+ VBadge: typeof import('vuetify/components')['VBadge']
2635
+ VAvatar: typeof import('vuetify/components')['VAvatar']
2637
2636
  VBanner: typeof import('vuetify/components')['VBanner']
2638
2637
  VBannerActions: typeof import('vuetify/components')['VBannerActions']
2639
2638
  VBannerText: typeof import('vuetify/components')['VBannerText']
2640
- VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
2641
- VBtn: typeof import('vuetify/components')['VBtn']
2639
+ VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2642
2640
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
2643
2641
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
2644
2642
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
2645
- VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2646
- VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
2647
- VCarousel: typeof import('vuetify/components')['VCarousel']
2648
- VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
2649
- VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
2650
- VChip: typeof import('vuetify/components')['VChip']
2651
- VCheckbox: typeof import('vuetify/components')['VCheckbox']
2652
- VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
2653
- VCombobox: typeof import('vuetify/components')['VCombobox']
2643
+ VBtn: typeof import('vuetify/components')['VBtn']
2654
2644
  VCard: typeof import('vuetify/components')['VCard']
2655
2645
  VCardActions: typeof import('vuetify/components')['VCardActions']
2656
2646
  VCardItem: typeof import('vuetify/components')['VCardItem']
2657
2647
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
2658
2648
  VCardText: typeof import('vuetify/components')['VCardText']
2659
2649
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
2650
+ VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
2651
+ VChip: typeof import('vuetify/components')['VChip']
2652
+ VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
2653
+ VCheckbox: typeof import('vuetify/components')['VCheckbox']
2654
+ VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
2660
2655
  VCode: typeof import('vuetify/components')['VCode']
2656
+ VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
2661
2657
  VColorPicker: typeof import('vuetify/components')['VColorPicker']
2662
- VCounter: typeof import('vuetify/components')['VCounter']
2663
2658
  VChipGroup: typeof import('vuetify/components')['VChipGroup']
2664
- VDatePicker: typeof import('vuetify/components')['VDatePicker']
2665
- VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
2666
- VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
2667
- VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
2668
- VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
2669
- VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
2659
+ VCarousel: typeof import('vuetify/components')['VCarousel']
2660
+ VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
2661
+ VCombobox: typeof import('vuetify/components')['VCombobox']
2662
+ VCounter: typeof import('vuetify/components')['VCounter']
2670
2663
  VDataTable: typeof import('vuetify/components')['VDataTable']
2671
2664
  VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
2672
2665
  VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
@@ -2674,29 +2667,35 @@ declare module 'vue' {
2674
2667
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
2675
2668
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
2676
2669
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
2670
+ VDatePicker: typeof import('vuetify/components')['VDatePicker']
2671
+ VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
2672
+ VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
2673
+ VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
2674
+ VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
2675
+ VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
2676
+ VEmptyState: typeof import('vuetify/components')['VEmptyState']
2677
2677
  VDivider: typeof import('vuetify/components')['VDivider']
2678
+ VDialog: typeof import('vuetify/components')['VDialog']
2678
2679
  VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
2679
2680
  VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
2680
2681
  VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
2681
2682
  VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
2682
2683
  VFab: typeof import('vuetify/components')['VFab']
2683
- VDialog: typeof import('vuetify/components')['VDialog']
2684
- VEmptyState: typeof import('vuetify/components')['VEmptyState']
2684
+ VFileInput: typeof import('vuetify/components')['VFileInput']
2685
+ VField: typeof import('vuetify/components')['VField']
2686
+ VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
2687
+ VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
2685
2688
  VFooter: typeof import('vuetify/components')['VFooter']
2689
+ VImg: typeof import('vuetify/components')['VImg']
2686
2690
  VIcon: typeof import('vuetify/components')['VIcon']
2687
2691
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
2688
2692
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
2689
2693
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
2690
2694
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
2691
- VFileInput: typeof import('vuetify/components')['VFileInput']
2692
- VField: typeof import('vuetify/components')['VField']
2693
- VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
2694
- VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
2695
- VImg: typeof import('vuetify/components')['VImg']
2696
- VInput: typeof import('vuetify/components')['VInput']
2695
+ VKbd: typeof import('vuetify/components')['VKbd']
2697
2696
  VItemGroup: typeof import('vuetify/components')['VItemGroup']
2698
2697
  VItem: typeof import('vuetify/components')['VItem']
2699
- VKbd: typeof import('vuetify/components')['VKbd']
2698
+ VInput: typeof import('vuetify/components')['VInput']
2700
2699
  VList: typeof import('vuetify/components')['VList']
2701
2700
  VListGroup: typeof import('vuetify/components')['VListGroup']
2702
2701
  VListImg: typeof import('vuetify/components')['VListImg']
@@ -2707,79 +2706,80 @@ declare module 'vue' {
2707
2706
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
2708
2707
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
2709
2708
  VLabel: typeof import('vuetify/components')['VLabel']
2710
- VMessages: typeof import('vuetify/components')['VMessages']
2711
- VOtpInput: typeof import('vuetify/components')['VOtpInput']
2712
2709
  VMain: typeof import('vuetify/components')['VMain']
2713
2710
  VMenu: typeof import('vuetify/components')['VMenu']
2711
+ VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
2712
+ VMessages: typeof import('vuetify/components')['VMessages']
2713
+ VNumberInput: typeof import('vuetify/components')['VNumberInput']
2714
2714
  VOverlay: typeof import('vuetify/components')['VOverlay']
2715
+ VOtpInput: typeof import('vuetify/components')['VOtpInput']
2715
2716
  VPagination: typeof import('vuetify/components')['VPagination']
2716
- VNumberInput: typeof import('vuetify/components')['VNumberInput']
2717
- VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
2718
2717
  VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
2719
- VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
2718
+ VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
2720
2719
  VRating: typeof import('vuetify/components')['VRating']
2720
+ VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
2721
2721
  VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
2722
- VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
2723
2722
  VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
2724
- VSelect: typeof import('vuetify/components')['VSelect']
2725
2723
  VSheet: typeof import('vuetify/components')['VSheet']
2724
+ VSelect: typeof import('vuetify/components')['VSelect']
2726
2725
  VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
2727
2726
  VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
2727
+ VSlider: typeof import('vuetify/components')['VSlider']
2728
+ VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
2729
+ VSwitch: typeof import('vuetify/components')['VSwitch']
2730
+ VSystemBar: typeof import('vuetify/components')['VSystemBar']
2728
2731
  VStepper: typeof import('vuetify/components')['VStepper']
2729
2732
  VStepperActions: typeof import('vuetify/components')['VStepperActions']
2730
2733
  VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
2731
2734
  VStepperItem: typeof import('vuetify/components')['VStepperItem']
2732
2735
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
2733
2736
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
2734
- VSnackbar: typeof import('vuetify/components')['VSnackbar']
2735
- VSlider: typeof import('vuetify/components')['VSlider']
2736
- VSystemBar: typeof import('vuetify/components')['VSystemBar']
2737
2737
  VTab: typeof import('vuetify/components')['VTab']
2738
2738
  VTabs: typeof import('vuetify/components')['VTabs']
2739
2739
  VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
2740
2740
  VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
2741
- VSwitch: typeof import('vuetify/components')['VSwitch']
2742
- VTextField: typeof import('vuetify/components')['VTextField']
2743
2741
  VTable: typeof import('vuetify/components')['VTable']
2744
2742
  VTextarea: typeof import('vuetify/components')['VTextarea']
2745
- VToolbar: typeof import('vuetify/components')['VToolbar']
2746
- VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
2747
- VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
2743
+ VTextField: typeof import('vuetify/components')['VTextField']
2748
2744
  VTimeline: typeof import('vuetify/components')['VTimeline']
2749
2745
  VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
2746
+ VTimePicker: typeof import('vuetify/components')['VTimePicker']
2747
+ VTimePickerClock: typeof import('vuetify/components')['VTimePickerClock']
2748
+ VTimePickerControls: typeof import('vuetify/components')['VTimePickerControls']
2750
2749
  VTooltip: typeof import('vuetify/components')['VTooltip']
2750
+ VToolbar: typeof import('vuetify/components')['VToolbar']
2751
+ VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
2752
+ VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
2751
2753
  VTreeview: typeof import('vuetify/components')['VTreeview']
2752
2754
  VTreeviewItem: typeof import('vuetify/components')['VTreeviewItem']
2753
2755
  VTreeviewGroup: typeof import('vuetify/components')['VTreeviewGroup']
2754
2756
  VWindow: typeof import('vuetify/components')['VWindow']
2755
2757
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
2756
- VTimePicker: typeof import('vuetify/components')['VTimePicker']
2757
- VTimePickerClock: typeof import('vuetify/components')['VTimePickerClock']
2758
- VTimePickerControls: typeof import('vuetify/components')['VTimePickerControls']
2759
- VDataIterator: typeof import('vuetify/components')['VDataIterator']
2758
+ VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
2760
2759
  VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
2760
+ VDataIterator: typeof import('vuetify/components')['VDataIterator']
2761
2761
  VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
2762
- VHover: typeof import('vuetify/components')['VHover']
2763
2762
  VForm: typeof import('vuetify/components')['VForm']
2764
2763
  VContainer: typeof import('vuetify/components')['VContainer']
2765
2764
  VCol: typeof import('vuetify/components')['VCol']
2766
2765
  VRow: typeof import('vuetify/components')['VRow']
2767
2766
  VSpacer: typeof import('vuetify/components')['VSpacer']
2767
+ VHover: typeof import('vuetify/components')['VHover']
2768
2768
  VLazy: typeof import('vuetify/components')['VLazy']
2769
2769
  VLayout: typeof import('vuetify/components')['VLayout']
2770
2770
  VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
2771
2771
  VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
2772
2772
  VNoSsr: typeof import('vuetify/components')['VNoSsr']
2773
- VRadio: typeof import('vuetify/components')['VRadio']
2774
2773
  VParallax: typeof import('vuetify/components')['VParallax']
2774
+ VRadio: typeof import('vuetify/components')['VRadio']
2775
2775
  VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
2776
2776
  VResponsive: typeof import('vuetify/components')['VResponsive']
2777
2777
  VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
2778
2778
  VSparkline: typeof import('vuetify/components')['VSparkline']
2779
2779
  VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
2780
2780
  VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
2781
- VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
2782
2781
  VValidation: typeof import('vuetify/components')['VValidation']
2782
+ VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
2783
2783
  VFabTransition: typeof import('vuetify/components')['VFabTransition']
2784
2784
  VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
2785
2785
  VDialogTopTransition: typeof import('vuetify/components')['VDialogTopTransition']
@@ -2796,7 +2796,10 @@ declare module 'vue' {
2796
2796
  VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
2797
2797
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
2798
2798
  VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
2799
- VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
2799
+ VSnackbar: typeof import('vuetify/components')['VSnackbar']
2800
+ VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2801
+ VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2802
+ VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
2800
2803
  VCalendar: typeof import('vuetify/labs/components')['VCalendar']
2801
2804
  VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
2802
2805
  VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
@@ -2804,24 +2807,21 @@ declare module 'vue' {
2804
2807
  VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
2805
2808
  VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
2806
2809
  VColorInput: typeof import('vuetify/labs/components')['VColorInput']
2807
- VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
2808
- VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2809
- VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2810
- VPicker: typeof import('vuetify/labs/components')['VPicker']
2811
- VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
2812
2810
  VPie: typeof import('vuetify/labs/components')['VPie']
2813
2811
  VPieSegment: typeof import('vuetify/labs/components')['VPieSegment']
2814
2812
  VPieTooltip: typeof import('vuetify/labs/components')['VPieTooltip']
2813
+ VPicker: typeof import('vuetify/labs/components')['VPicker']
2814
+ VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
2815
+ VHotkey: typeof import('vuetify/labs/components')['VHotkey']
2815
2816
  VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
2816
2817
  VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
2817
2818
  VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
2818
- VHotkey: typeof import('vuetify/labs/components')['VHotkey']
2819
2819
  VVideo: typeof import('vuetify/labs/components')['VVideo']
2820
2820
  VVideoControls: typeof import('vuetify/labs/components')['VVideoControls']
2821
2821
  VVideoVolume: typeof import('vuetify/labs/components')['VVideoVolume']
2822
2822
  VDateInput: typeof import('vuetify/labs/components')['VDateInput']
2823
- VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
2824
2823
  VMaskInput: typeof import('vuetify/labs/components')['VMaskInput']
2824
+ VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
2825
2825
  }
2826
2826
  export interface GlobalDirectives {
2827
2827
  vClickOutside: typeof import('vuetify/directives')['ClickOutside']
package/lib/framework.js CHANGED
@@ -109,7 +109,7 @@ export function createVuetify() {
109
109
  };
110
110
  });
111
111
  }
112
- export const version = "3.9.3-dev.2025-08-01";
112
+ export const version = "3.9.3-dev.2025-08-02";
113
113
  createVuetify.version = version;
114
114
 
115
115
  // Vue's inject() can only be used in setup
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vuetify/nightly",
3
3
  "description": "Vue Material Component Framework",
4
- "version": "3.9.3-dev.2025-08-01",
4
+ "version": "3.9.3-dev.2025-08-02",
5
5
  "author": {
6
6
  "name": "John Leider",
7
7
  "email": "john@vuetifyjs.com"