@vuetify/nightly 3.9.3-dev.2025-07-31 → 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.
Files changed (70) hide show
  1. package/CHANGELOG.md +10 -3
  2. package/dist/json/attributes.json +2098 -2022
  3. package/dist/json/importMap-labs.json +24 -24
  4. package/dist/json/importMap.json +168 -168
  5. package/dist/json/tags.json +19 -0
  6. package/dist/json/web-types.json +4252 -4050
  7. package/dist/vuetify-labs.cjs +77 -24
  8. package/dist/vuetify-labs.css +5349 -5343
  9. package/dist/vuetify-labs.d.ts +329 -61
  10. package/dist/vuetify-labs.esm.js +77 -24
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +77 -24
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +77 -24
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +2939 -2933
  17. package/dist/vuetify.d.ts +329 -61
  18. package/dist/vuetify.esm.js +77 -24
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +77 -24
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +252 -249
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VDataIterator/VDataIterator.d.ts +1 -0
  26. package/lib/components/VDataIterator/VDataIterator.js +1 -0
  27. package/lib/components/VDataIterator/VDataIterator.js.map +1 -1
  28. package/lib/components/VDataTable/VDataTable.css +7 -1
  29. package/lib/components/VDataTable/VDataTable.d.ts +164 -0
  30. package/lib/components/VDataTable/VDataTable.sass +4 -1
  31. package/lib/components/VDataTable/VDataTableColumn.d.ts +4 -1
  32. package/lib/components/VDataTable/VDataTableColumn.js +6 -2
  33. package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
  34. package/lib/components/VDataTable/VDataTableGroupHeaderRow.d.ts +57 -3
  35. package/lib/components/VDataTable/VDataTableGroupHeaderRow.js +27 -12
  36. package/lib/components/VDataTable/VDataTableGroupHeaderRow.js.map +1 -1
  37. package/lib/components/VDataTable/VDataTableHeaders.js +3 -0
  38. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  39. package/lib/components/VDataTable/VDataTableRow.d.ts +51 -0
  40. package/lib/components/VDataTable/VDataTableRow.js +17 -4
  41. package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
  42. package/lib/components/VDataTable/VDataTableRows.d.ts +100 -0
  43. package/lib/components/VDataTable/VDataTableRows.js +9 -4
  44. package/lib/components/VDataTable/VDataTableRows.js.map +1 -1
  45. package/lib/components/VDataTable/VDataTableServer.d.ts +110 -0
  46. package/lib/components/VDataTable/VDataTableVirtual.d.ts +110 -0
  47. package/lib/components/VDataTable/composables/headers.d.ts +14 -0
  48. package/lib/components/VDataTable/types.d.ts +1 -0
  49. package/lib/components/VDataTable/types.js.map +1 -1
  50. package/lib/components/VFileInput/VFileInput.d.ts +25 -0
  51. package/lib/components/VFileInput/VFileInput.js +11 -1
  52. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  53. package/lib/components/VSkeletonLoader/VSkeletonLoader.js +6 -4
  54. package/lib/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -1
  55. package/lib/components/VWindow/VWindow.js +2 -2
  56. package/lib/components/VWindow/VWindow.js.map +1 -1
  57. package/lib/entry-bundler.js +1 -1
  58. package/lib/framework.d.ts +62 -61
  59. package/lib/framework.js +1 -1
  60. package/lib/iconsets/fa.js +2 -0
  61. package/lib/iconsets/fa.js.map +1 -1
  62. package/lib/iconsets/fa4.js +2 -0
  63. package/lib/iconsets/fa4.js.map +1 -1
  64. package/lib/iconsets/md.js +2 -0
  65. package/lib/iconsets/md.js.map +1 -1
  66. package/lib/iconsets/mdi-svg.js +2 -0
  67. package/lib/iconsets/mdi-svg.js.map +1 -1
  68. package/lib/iconsets/mdi.js +2 -0
  69. package/lib/iconsets/mdi.js.map +1 -1
  70. package/package.json +1 -1
@@ -15,6 +15,7 @@ export declare const makeDataTableHeaderProps: <Defaults extends {
15
15
  readonly minWidth?: number | string | undefined;
16
16
  readonly maxWidth?: number | string | undefined;
17
17
  readonly nowrap?: boolean | undefined;
18
+ readonly intent?: number | undefined;
18
19
  readonly headerProps?: {
19
20
  readonly [x: string]: any;
20
21
  } | undefined;
@@ -35,6 +36,7 @@ export declare const makeDataTableHeaderProps: <Defaults extends {
35
36
  readonly minWidth?: number | string | undefined;
36
37
  readonly maxWidth?: number | string | undefined;
37
38
  readonly nowrap?: boolean | undefined;
39
+ readonly intent?: number | undefined;
38
40
  readonly headerProps?: {
39
41
  readonly [x: string]: any;
40
42
  } | undefined;
@@ -58,6 +60,7 @@ export declare const makeDataTableHeaderProps: <Defaults extends {
58
60
  readonly minWidth?: number | string | undefined;
59
61
  readonly maxWidth?: number | string | undefined;
60
62
  readonly nowrap?: boolean | undefined;
63
+ readonly intent?: number | undefined;
61
64
  readonly headerProps?: {
62
65
  readonly [x: string]: any;
63
66
  } | undefined;
@@ -78,6 +81,7 @@ export declare const makeDataTableHeaderProps: <Defaults extends {
78
81
  readonly minWidth?: number | string | undefined;
79
82
  readonly maxWidth?: number | string | undefined;
80
83
  readonly nowrap?: boolean | undefined;
84
+ readonly intent?: number | undefined;
81
85
  readonly headerProps?: {
82
86
  readonly [x: string]: any;
83
87
  } | undefined;
@@ -100,6 +104,7 @@ export declare const makeDataTableHeaderProps: <Defaults extends {
100
104
  readonly minWidth?: number | string | undefined;
101
105
  readonly maxWidth?: number | string | undefined;
102
106
  readonly nowrap?: boolean | undefined;
107
+ readonly intent?: number | undefined;
103
108
  readonly headerProps?: {
104
109
  readonly [x: string]: any;
105
110
  } | undefined;
@@ -120,6 +125,7 @@ export declare const makeDataTableHeaderProps: <Defaults extends {
120
125
  readonly minWidth?: number | string | undefined;
121
126
  readonly maxWidth?: number | string | undefined;
122
127
  readonly nowrap?: boolean | undefined;
128
+ readonly intent?: number | undefined;
123
129
  readonly headerProps?: {
124
130
  readonly [x: string]: any;
125
131
  } | undefined;
@@ -143,6 +149,7 @@ export declare const makeDataTableHeaderProps: <Defaults extends {
143
149
  readonly minWidth?: number | string | undefined;
144
150
  readonly maxWidth?: number | string | undefined;
145
151
  readonly nowrap?: boolean | undefined;
152
+ readonly intent?: number | undefined;
146
153
  readonly headerProps?: {
147
154
  readonly [x: string]: any;
148
155
  } | undefined;
@@ -163,6 +170,7 @@ export declare const makeDataTableHeaderProps: <Defaults extends {
163
170
  readonly minWidth?: number | string | undefined;
164
171
  readonly maxWidth?: number | string | undefined;
165
172
  readonly nowrap?: boolean | undefined;
173
+ readonly intent?: number | undefined;
166
174
  readonly headerProps?: {
167
175
  readonly [x: string]: any;
168
176
  } | undefined;
@@ -185,6 +193,7 @@ export declare const makeDataTableHeaderProps: <Defaults extends {
185
193
  readonly minWidth?: number | string | undefined;
186
194
  readonly maxWidth?: number | string | undefined;
187
195
  readonly nowrap?: boolean | undefined;
196
+ readonly intent?: number | undefined;
188
197
  readonly headerProps?: {
189
198
  readonly [x: string]: any;
190
199
  } | undefined;
@@ -205,6 +214,7 @@ export declare const makeDataTableHeaderProps: <Defaults extends {
205
214
  readonly minWidth?: number | string | undefined;
206
215
  readonly maxWidth?: number | string | undefined;
207
216
  readonly nowrap?: boolean | undefined;
217
+ readonly intent?: number | undefined;
208
218
  readonly headerProps?: {
209
219
  readonly [x: string]: any;
210
220
  } | undefined;
@@ -243,6 +253,7 @@ export declare function createHeaders(props: HeaderProps, options?: {
243
253
  title?: string | undefined;
244
254
  nowrap?: boolean | undefined;
245
255
  align?: "start" | "end" | "center" | undefined;
256
+ intent?: number | undefined;
246
257
  headerProps?: Record<string, any> | undefined;
247
258
  cellProps?: import("../types.js").HeaderCellProps | undefined;
248
259
  sortable: boolean;
@@ -266,6 +277,7 @@ export declare function createHeaders(props: HeaderProps, options?: {
266
277
  title?: string | undefined;
267
278
  nowrap?: boolean | undefined;
268
279
  align?: "start" | "end" | "center" | undefined;
280
+ intent?: number | undefined;
269
281
  headerProps?: Record<string, any> | undefined;
270
282
  cellProps?: import("../types.js").HeaderCellProps | undefined;
271
283
  sortable: boolean;
@@ -290,6 +302,7 @@ export declare function createHeaders(props: HeaderProps, options?: {
290
302
  title?: string | undefined;
291
303
  nowrap?: boolean | undefined;
292
304
  align?: "start" | "end" | "center" | undefined;
305
+ intent?: number | undefined;
293
306
  headerProps?: Record<string, any> | undefined;
294
307
  cellProps?: import("../types.js").HeaderCellProps | undefined;
295
308
  sortable: boolean;
@@ -313,6 +326,7 @@ export declare function createHeaders(props: HeaderProps, options?: {
313
326
  title?: string | undefined;
314
327
  nowrap?: boolean | undefined;
315
328
  align?: "start" | "end" | "center" | undefined;
329
+ intent?: number | undefined;
316
330
  headerProps?: Record<string, any> | undefined;
317
331
  cellProps?: import("../types.js").HeaderCellProps | undefined;
318
332
  sortable: boolean;
@@ -14,6 +14,7 @@ export type DataTableHeader<T = Record<string, any>> = {
14
14
  minWidth?: number | string;
15
15
  maxWidth?: number | string;
16
16
  nowrap?: boolean;
17
+ intent?: number;
17
18
  headerProps?: Record<string, any>;
18
19
  cellProps?: HeaderCellProps;
19
20
  sortable?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/components/VDataTable/types.ts"],"sourcesContent":["// Types\nimport type { provideExpanded } from './composables/expand'\nimport type { Group, GroupableItem, provideGroupBy } from './composables/group'\nimport type { provideSelection, SelectableItem } from './composables/select'\nimport type { FilterFunction, InternalItem } from '@/composables/filter'\nimport type { SelectItemKey } from '@/util'\n\nexport type DataTableCompareFunction<T = any> = (a: T, b: T) => number | null\n\nexport type DataTableHeader<T = Record<string, any>> = {\n key?: 'data-table-group' | 'data-table-select' | 'data-table-expand' | (string & {})\n value?: SelectItemKey<T>\n title?: string\n\n fixed?: boolean | 'start' | 'end'\n align?: 'start' | 'end' | 'center'\n\n width?: number | string\n minWidth?: number | string\n maxWidth?: number | string\n nowrap?: boolean\n\n headerProps?: Record<string, any>\n cellProps?: HeaderCellProps\n\n sortable?: boolean\n sort?: DataTableCompareFunction\n sortRaw?: DataTableCompareFunction\n filter?: FilterFunction\n\n children?: DataTableHeader<T>[]\n}\n\nexport type InternalDataTableHeader = Omit<DataTableHeader, 'key' | 'value' | 'children'> & {\n key: string | null\n value: SelectItemKey | null\n sortable: boolean\n fixedOffset?: number\n fixedEndOffset?: number\n lastFixed?: boolean\n firstFixedEnd?: boolean\n nowrap?: boolean\n colspan?: number\n rowspan?: number\n children?: InternalDataTableHeader[]\n}\n\nexport interface DataTableItem<T = any> extends Omit<InternalItem<T>, 'type'>, GroupableItem<T>, SelectableItem {\n key: any\n index: number\n columns: {\n [key: string]: any\n }\n}\n\nexport type GroupHeaderSlot = {\n index: number\n item: Group\n columns: InternalDataTableHeader[]\n isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n isSelected: ReturnType<typeof provideSelection>['isSelected']\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n toggleGroup: ReturnType<typeof provideGroupBy>['toggleGroup']\n isGroupOpen: ReturnType<typeof provideGroupBy>['isGroupOpen']\n}\n\ntype ItemSlotBase<T> = {\n index: number\n item: T\n internalItem: DataTableItem<T>\n isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n isSelected: ReturnType<typeof provideSelection>['isSelected']\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n}\n\nexport type ItemSlot<T> = ItemSlotBase<T> & {\n columns: InternalDataTableHeader[]\n}\n\nexport type ItemKeySlot<T> = ItemSlotBase<T> & {\n value: any\n column: InternalDataTableHeader\n}\n\nexport type RowProps<T> = Record<string, any> | RowPropsFunction<T>\nexport type RowPropsFunction<T> = (\n data: Pick<ItemKeySlot<T>, 'index' | 'item' | 'internalItem'>\n) => Record<string, any>\n\nexport type CellProps<T> = Record<string, any> | CellPropsFunction<T>\nexport type CellPropsFunction<T> = (\n data: Pick<ItemKeySlot<T>, 'index' | 'item' | 'internalItem' | 'value' | 'column'>\n) => Record<string, any>\n\nexport type HeaderCellProps = Record<string, any> | HeaderCellPropsFunction\nexport type HeaderCellPropsFunction = (\n data: Pick<ItemKeySlot<any>, 'index' | 'item' | 'internalItem' | 'value'>\n) => Record<string, any>\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/components/VDataTable/types.ts"],"sourcesContent":["// Types\nimport type { provideExpanded } from './composables/expand'\nimport type { Group, GroupableItem, provideGroupBy } from './composables/group'\nimport type { provideSelection, SelectableItem } from './composables/select'\nimport type { FilterFunction, InternalItem } from '@/composables/filter'\nimport type { SelectItemKey } from '@/util'\n\nexport type DataTableCompareFunction<T = any> = (a: T, b: T) => number | null\n\nexport type DataTableHeader<T = Record<string, any>> = {\n key?: 'data-table-group' | 'data-table-select' | 'data-table-expand' | (string & {})\n value?: SelectItemKey<T>\n title?: string\n\n fixed?: boolean | 'start' | 'end'\n align?: 'start' | 'end' | 'center'\n\n width?: number | string\n minWidth?: number | string\n maxWidth?: number | string\n nowrap?: boolean\n intent?: number\n\n headerProps?: Record<string, any>\n cellProps?: HeaderCellProps\n\n sortable?: boolean\n sort?: DataTableCompareFunction\n sortRaw?: DataTableCompareFunction\n filter?: FilterFunction\n\n children?: DataTableHeader<T>[]\n}\n\nexport type InternalDataTableHeader = Omit<DataTableHeader, 'key' | 'value' | 'children'> & {\n key: string | null\n value: SelectItemKey | null\n sortable: boolean\n fixedOffset?: number\n fixedEndOffset?: number\n lastFixed?: boolean\n firstFixedEnd?: boolean\n nowrap?: boolean\n colspan?: number\n rowspan?: number\n children?: InternalDataTableHeader[]\n}\n\nexport interface DataTableItem<T = any> extends Omit<InternalItem<T>, 'type'>, GroupableItem<T>, SelectableItem {\n key: any\n index: number\n columns: {\n [key: string]: any\n }\n}\n\nexport type GroupHeaderSlot = {\n index: number\n item: Group\n columns: InternalDataTableHeader[]\n isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n isSelected: ReturnType<typeof provideSelection>['isSelected']\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n toggleGroup: ReturnType<typeof provideGroupBy>['toggleGroup']\n isGroupOpen: ReturnType<typeof provideGroupBy>['isGroupOpen']\n}\n\ntype ItemSlotBase<T> = {\n index: number\n item: T\n internalItem: DataTableItem<T>\n isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n isSelected: ReturnType<typeof provideSelection>['isSelected']\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n}\n\nexport type ItemSlot<T> = ItemSlotBase<T> & {\n columns: InternalDataTableHeader[]\n}\n\nexport type ItemKeySlot<T> = ItemSlotBase<T> & {\n value: any\n column: InternalDataTableHeader\n}\n\nexport type RowProps<T> = Record<string, any> | RowPropsFunction<T>\nexport type RowPropsFunction<T> = (\n data: Pick<ItemKeySlot<T>, 'index' | 'item' | 'internalItem'>\n) => Record<string, any>\n\nexport type CellProps<T> = Record<string, any> | CellPropsFunction<T>\nexport type CellPropsFunction<T> = (\n data: Pick<ItemKeySlot<T>, 'index' | 'item' | 'internalItem' | 'value' | 'column'>\n) => Record<string, any>\n\nexport type HeaderCellProps = Record<string, any> | HeaderCellPropsFunction\nexport type HeaderCellPropsFunction = (\n data: Pick<ItemKeySlot<any>, 'index' | 'item' | 'internalItem' | 'value'>\n) => Record<string, any>\n"],"mappings":"","ignoreList":[]}
@@ -74,6 +74,7 @@ export declare const makeVFileInputProps: <Defaults extends {
74
74
  hideInput?: unknown;
75
75
  multiple?: unknown;
76
76
  showSize?: unknown;
77
+ truncateLength?: unknown;
77
78
  } = {}>(defaults?: Defaults | undefined) => {
78
79
  theme: unknown extends Defaults["theme"] ? StringConstructor : {
79
80
  type: PropType<unknown extends Defaults["theme"] ? string : string | Defaults["theme"]>;
@@ -451,6 +452,16 @@ export declare const makeVFileInputProps: <Defaults extends {
451
452
  type: PropType<unknown extends Defaults["showSize"] ? boolean | 1024 | 1000 : boolean | 1024 | 1000 | Defaults["showSize"]>;
452
453
  default: unknown extends Defaults["showSize"] ? boolean | 1024 | 1000 : Defaults["showSize"] | NonNullable<boolean | 1024 | 1000>;
453
454
  };
455
+ truncateLength: unknown extends Defaults["truncateLength"] ? {
456
+ type: (StringConstructor | NumberConstructor)[];
457
+ default: number;
458
+ } : Omit<{
459
+ type: (StringConstructor | NumberConstructor)[];
460
+ default: number;
461
+ }, "type" | "default"> & {
462
+ type: PropType<unknown extends Defaults["truncateLength"] ? string | number : string | number | Defaults["truncateLength"]>;
463
+ default: unknown extends Defaults["truncateLength"] ? string | number : NonNullable<string | number> | Defaults["truncateLength"];
464
+ };
454
465
  };
455
466
  export declare const VFileInput: {
456
467
  new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
@@ -488,6 +499,7 @@ export declare const VFileInput: {
488
499
  counterString: string;
489
500
  hideInput: boolean;
490
501
  showSize: boolean | 1024 | 1000;
502
+ truncateLength: string | number;
491
503
  } & {
492
504
  name?: string | undefined;
493
505
  id?: string | undefined;
@@ -869,6 +881,7 @@ export declare const VFileInput: {
869
881
  counterString: string;
870
882
  hideInput: boolean;
871
883
  showSize: boolean | 1024 | 1000;
884
+ truncateLength: string | number;
872
885
  }, true, {}, import("vue").SlotsType<Partial<{
873
886
  default: (arg: import("../VInput/VInput.js").VInputSlot & import("../VField/VField.js").VFieldSlot) => import("vue").VNode[];
874
887
  prepend: (arg: import("../VInput/VInput.js").VInputSlot) => import("vue").VNode[];
@@ -933,6 +946,7 @@ export declare const VFileInput: {
933
946
  counterString: string;
934
947
  hideInput: boolean;
935
948
  showSize: boolean | 1024 | 1000;
949
+ truncateLength: string | number;
936
950
  } & {
937
951
  name?: string | undefined;
938
952
  id?: string | undefined;
@@ -1308,6 +1322,7 @@ export declare const VFileInput: {
1308
1322
  counterString: string;
1309
1323
  hideInput: boolean;
1310
1324
  showSize: boolean | 1024 | 1000;
1325
+ truncateLength: string | number;
1311
1326
  }>;
1312
1327
  __isFragment?: never;
1313
1328
  __isTeleport?: never;
@@ -1347,6 +1362,7 @@ export declare const VFileInput: {
1347
1362
  counterString: string;
1348
1363
  hideInput: boolean;
1349
1364
  showSize: boolean | 1024 | 1000;
1365
+ truncateLength: string | number;
1350
1366
  } & {
1351
1367
  name?: string | undefined;
1352
1368
  id?: string | undefined;
@@ -1728,6 +1744,7 @@ export declare const VFileInput: {
1728
1744
  counterString: string;
1729
1745
  hideInput: boolean;
1730
1746
  showSize: boolean | 1024 | 1000;
1747
+ truncateLength: string | number;
1731
1748
  }, {}, string, import("vue").SlotsType<Partial<{
1732
1749
  default: (arg: import("../VInput/VInput.js").VInputSlot & import("../VField/VField.js").VFieldSlot) => import("vue").VNode[];
1733
1750
  prepend: (arg: import("../VInput/VInput.js").VInputSlot) => import("vue").VNode[];
@@ -1876,6 +1893,10 @@ export declare const VFileInput: {
1876
1893
  default: boolean;
1877
1894
  validator: (v: boolean | number) => boolean;
1878
1895
  };
1896
+ truncateLength: {
1897
+ type: (StringConstructor | NumberConstructor)[];
1898
+ default: number;
1899
+ };
1879
1900
  }, import("vue").ExtractPropTypes<{
1880
1901
  theme: StringConstructor;
1881
1902
  rounded: {
@@ -2002,5 +2023,9 @@ export declare const VFileInput: {
2002
2023
  default: boolean;
2003
2024
  validator: (v: boolean | number) => boolean;
2004
2025
  };
2026
+ truncateLength: {
2027
+ type: (StringConstructor | NumberConstructor)[];
2028
+ default: number;
2029
+ };
2005
2030
  }>>;
2006
2031
  export type VFileInput = InstanceType<typeof VFileInput>;
@@ -36,6 +36,10 @@ export const makeVFileInputProps = propsFactory({
36
36
  return typeof v === 'boolean' || [1000, 1024].includes(Number(v));
37
37
  }
38
38
  },
39
+ truncateLength: {
40
+ type: [Number, String],
41
+ default: 22
42
+ },
39
43
  ...makeVInputProps({
40
44
  prependIcon: '$file'
41
45
  }),
@@ -93,7 +97,8 @@ export const VFileInput = genericComponent()({
93
97
  name = '',
94
98
  size = 0
95
99
  } = file;
96
- return !props.showSize ? name : `${name} (${humanReadableFileSize(size, base.value)})`;
100
+ const truncatedText = truncateText(name);
101
+ return !props.showSize ? truncatedText : `${truncatedText} (${humanReadableFileSize(size, base.value)})`;
97
102
  }));
98
103
  const counterValue = computed(() => {
99
104
  const fileCount = model.value?.length ?? 0;
@@ -133,6 +138,11 @@ export const VFileInput = genericComponent()({
133
138
  callEvent(props['onClick:clear'], e);
134
139
  });
135
140
  }
141
+ function truncateText(str) {
142
+ if (str.length < Number(props.truncateLength)) return str;
143
+ const charsKeepOneSide = Math.floor((Number(props.truncateLength) - 1) / 2);
144
+ return `${str.slice(0, charsKeepOneSide)}…${str.slice(str.length - charsKeepOneSide)}`;
145
+ }
136
146
  function onDragover(e) {
137
147
  e.preventDefault();
138
148
  e.stopImmediatePropagation();
@@ -1 +1 @@
1
- {"version":3,"file":"VFileInput.js","names":["VChip","VCounter","VField","makeVFieldProps","makeVInputProps","VInput","useFileDrop","makeFileFilterProps","useFileFilter","useFocus","forwardRefs","useLocale","useProxiedModel","computed","nextTick","ref","shallowRef","toRef","watch","callEvent","filterInputAttrs","genericComponent","humanReadableFileSize","propsFactory","useRender","wrapInArray","makeVFileInputProps","chips","Boolean","counter","counterSizeString","type","String","default","counterString","hideInput","multiple","showSize","Number","validator","v","includes","prependIcon","modelValue","Array","Object","props","val","every","clearable","VFileInput","name","inheritAttrs","emits","e","focused","files","rejected","setup","_ref","attrs","emit","slots","t","filterAccepted","model","isArray","isFocused","focus","blur","base","undefined","totalBytes","value","reduce","bytes","_ref2","size","totalBytesReadable","fileNames","map","file","counterValue","fileCount","length","vInputRef","vFieldRef","inputRef","isActive","active","isPlainOrUnderlined","variant","isDragging","handleDrop","hasFilesOrFolders","onFocus","document","activeElement","onClickPrepend","click","onControlMousedown","onControlClick","onClear","stopPropagation","onDragover","preventDefault","stopImmediatePropagation","onDragleave","onDrop","allDroppedFiles","selectAccepted","onFileSelection","target","repack","filterByType","dataTransfer","DataTransfer","accepted","items","add","event","Event","bubbles","dispatchEvent","newValue","hasModelReset","hasCounter","hasDetails","details","rootAttrs","inputAttrs","_","inputProps","filterProps","fieldProps","expectsDirectory","webkitdirectory","inputAccept","accept","_createVNode","_mergeProps","class","style","_ref3","id","isDisabled","isDirty","isReadonly","isValid","dirty","_ref4","fieldClass","slotProps","_createElementVNode","_Fragment","_normalizeClass","selection","text","join","disabled"],"sources":["../../../src/components/VFileInput/VFileInput.tsx"],"sourcesContent":["// Styles\nimport './VFileInput.sass'\n\n// Components\nimport { VChip } from '@/components/VChip'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\nimport { makeVFieldProps } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFileDrop } from '@/composables/fileDrop'\nimport { makeFileFilterProps, useFileFilter } from '@/composables/fileFilter'\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, shallowRef, toRef, watch } from 'vue'\nimport {\n callEvent,\n filterInputAttrs,\n genericComponent,\n humanReadableFileSize,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport type VFileInputSlots = VInputSlots & VFieldSlots & {\n counter: never\n selection: {\n fileNames: string[]\n totalBytes: number\n totalBytesReadable: string\n }\n}\n\nexport const makeVFileInputProps = propsFactory({\n chips: Boolean,\n counter: Boolean,\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n hideInput: Boolean,\n multiple: Boolean,\n showSize: {\n type: [Boolean, Number, String] as PropType<boolean | 1000 | 1024>,\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(Number(v))\n )\n },\n },\n\n ...makeVInputProps({ prependIcon: '$file' }),\n\n modelValue: {\n type: [Array, Object] as PropType<File[] | File | null>,\n default: (props: any) => props.multiple ? [] : null,\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n\n ...makeFileFilterProps(),\n ...makeVFieldProps({ clearable: true }),\n}, 'VFileInput')\n\nexport const VFileInput = genericComponent<VFileInputSlots>()({\n name: 'VFileInput',\n\n inheritAttrs: false,\n\n props: makeVFileInputProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (files: File | File[]) => true,\n rejected: (files: File[]) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const { filterAccepted } = useFileFilter(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.modelValue,\n val => wrapInArray(val),\n val => (!props.multiple && Array.isArray(val)) ? val[0] : val,\n )\n const { isFocused, focus, blur } = useFocus(props)\n const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined)\n const totalBytes = computed(() => (model.value ?? []).reduce((bytes, { size = 0 }) => bytes + size, 0))\n const totalBytesReadable = computed(() => humanReadableFileSize(totalBytes.value, base.value))\n\n const fileNames = computed(() => (model.value ?? []).map(file => {\n const { name = '', size = 0 } = file\n\n return !props.showSize\n ? name\n : `${name} (${humanReadableFileSize(size, base.value)})`\n }))\n\n const counterValue = computed(() => {\n const fileCount = model.value?.length ?? 0\n if (props.showSize) return t(props.counterSizeString, fileCount, totalBytesReadable.value)\n else return t(props.counterString, fileCount)\n })\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = toRef(() => isFocused.value || props.active)\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n const isDragging = shallowRef(false)\n const { handleDrop, hasFilesOrFolders } = useFileDrop()\n\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onClickPrepend (e: MouseEvent) {\n inputRef.value?.click()\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onControlClick (e: MouseEvent) {\n inputRef.value?.click()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = []\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onDragover (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = true\n }\n function onDragleave (e: DragEvent) {\n e.preventDefault()\n isDragging.value = false\n }\n async function onDrop (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = false\n\n if (!inputRef.value || !hasFilesOrFolders(e)) return\n\n const allDroppedFiles = await handleDrop(e)\n selectAccepted(allDroppedFiles)\n }\n\n function onFileSelection (e: Event) {\n if (!e.target || (e as any).repack) return // prevent loop\n\n if (!props.filterByType) {\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n } else {\n selectAccepted([...(e as any).target.files])\n }\n }\n\n function selectAccepted (files: File[]) {\n const dataTransfer = new DataTransfer()\n const { accepted, rejected } = filterAccepted(files)\n\n if (rejected.length) {\n emit('rejected', rejected)\n }\n\n for (const file of accepted) {\n dataTransfer.items.add(file)\n }\n\n inputRef.value!.files = dataTransfer.files\n model.value = [...dataTransfer.files]\n\n const event = new Event('change', { bubbles: true }) as any\n event.repack = true\n inputRef.value!.dispatchEvent(event)\n }\n\n watch(model, newValue => {\n const hasModelReset = !Array.isArray(newValue) || !newValue.length\n\n if (hasModelReset && inputRef.value) {\n inputRef.value.value = ''\n }\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const { modelValue: _, ...inputProps } = VInput.filterProps(props)\n const fieldProps = VField.filterProps(props)\n\n const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false\n const inputAccept = expectsDirectory ? undefined : (props.filterByType ?? String(attrs.accept))\n\n return (\n <VInput\n ref={ vInputRef }\n modelValue={ props.multiple ? model.value : model.value[0] }\n class={[\n 'v-file-input',\n {\n 'v-file-input--chips': !!props.chips,\n 'v-file-input--dragging': isDragging.value,\n 'v-file-input--hide': props.hideInput,\n 'v-input--plain-underlined': isPlainOrUnderlined.value,\n },\n props.class,\n ]}\n style={ props.style }\n onClick:prepend={ onClickPrepend }\n { ...rootAttrs }\n { ...inputProps }\n centerAffix={ !isPlainOrUnderlined.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n hasDetails,\n }) => (\n <VField\n ref={ vFieldRef }\n prependIcon={ props.prependIcon }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n details={ hasDetails.value }\n error={ isValid.value === false }\n onDragover={ onDragover }\n onDrop={ onDrop }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n <input\n ref={ inputRef }\n type=\"file\"\n accept={ inputAccept }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n multiple={ props.multiple }\n name={ props.name }\n onClick={ e => {\n e.stopPropagation()\n\n if (isReadonly.value) e.preventDefault()\n\n onFocus()\n }}\n onChange={ onFileSelection }\n onDragleave={ onDragleave }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n <div class={ fieldClass }>\n { !!model.value?.length && !props.hideInput && (\n slots.selection ? slots.selection({\n fileNames: fileNames.value,\n totalBytes: totalBytes.value,\n totalBytesReadable: totalBytesReadable.value,\n })\n : props.chips ? fileNames.value.map(text => (\n <VChip\n key={ text }\n size=\"small\"\n text={ text }\n />\n ))\n : fileNames.value.join(', ')\n )}\n </div>\n </>\n ),\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ !!model.value?.length }\n value={ counterValue.value }\n disabled={ props.disabled }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VFileInput = InstanceType<typeof VFileInput>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VFileInput.js","names":["VChip","VCounter","VField","makeVFieldProps","makeVInputProps","VInput","useFileDrop","makeFileFilterProps","useFileFilter","useFocus","forwardRefs","useLocale","useProxiedModel","computed","nextTick","ref","shallowRef","toRef","watch","callEvent","filterInputAttrs","genericComponent","humanReadableFileSize","propsFactory","useRender","wrapInArray","makeVFileInputProps","chips","Boolean","counter","counterSizeString","type","String","default","counterString","hideInput","multiple","showSize","Number","validator","v","includes","truncateLength","prependIcon","modelValue","Array","Object","props","val","every","clearable","VFileInput","name","inheritAttrs","emits","e","focused","files","rejected","setup","_ref","attrs","emit","slots","t","filterAccepted","model","isArray","isFocused","focus","blur","base","undefined","totalBytes","value","reduce","bytes","_ref2","size","totalBytesReadable","fileNames","map","file","truncatedText","truncateText","counterValue","fileCount","length","vInputRef","vFieldRef","inputRef","isActive","active","isPlainOrUnderlined","variant","isDragging","handleDrop","hasFilesOrFolders","onFocus","document","activeElement","onClickPrepend","click","onControlMousedown","onControlClick","onClear","stopPropagation","str","charsKeepOneSide","Math","floor","slice","onDragover","preventDefault","stopImmediatePropagation","onDragleave","onDrop","allDroppedFiles","selectAccepted","onFileSelection","target","repack","filterByType","dataTransfer","DataTransfer","accepted","items","add","event","Event","bubbles","dispatchEvent","newValue","hasModelReset","hasCounter","hasDetails","details","rootAttrs","inputAttrs","_","inputProps","filterProps","fieldProps","expectsDirectory","webkitdirectory","inputAccept","accept","_createVNode","_mergeProps","class","style","_ref3","id","isDisabled","isDirty","isReadonly","isValid","dirty","_ref4","fieldClass","slotProps","_createElementVNode","_Fragment","_normalizeClass","selection","text","join","disabled"],"sources":["../../../src/components/VFileInput/VFileInput.tsx"],"sourcesContent":["// Styles\nimport './VFileInput.sass'\n\n// Components\nimport { VChip } from '@/components/VChip'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\nimport { makeVFieldProps } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFileDrop } from '@/composables/fileDrop'\nimport { makeFileFilterProps, useFileFilter } from '@/composables/fileFilter'\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, shallowRef, toRef, watch } from 'vue'\nimport {\n callEvent,\n filterInputAttrs,\n genericComponent,\n humanReadableFileSize,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport type VFileInputSlots = VInputSlots & VFieldSlots & {\n counter: never\n selection: {\n fileNames: string[]\n totalBytes: number\n totalBytesReadable: string\n }\n}\n\nexport const makeVFileInputProps = propsFactory({\n chips: Boolean,\n counter: Boolean,\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n hideInput: Boolean,\n multiple: Boolean,\n showSize: {\n type: [Boolean, Number, String] as PropType<boolean | 1000 | 1024>,\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(Number(v))\n )\n },\n },\n truncateLength: {\n type: [Number, String],\n default: 22,\n },\n\n ...makeVInputProps({ prependIcon: '$file' }),\n\n modelValue: {\n type: [Array, Object] as PropType<File[] | File | null>,\n default: (props: any) => props.multiple ? [] : null,\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n\n ...makeFileFilterProps(),\n ...makeVFieldProps({ clearable: true }),\n}, 'VFileInput')\n\nexport const VFileInput = genericComponent<VFileInputSlots>()({\n name: 'VFileInput',\n\n inheritAttrs: false,\n\n props: makeVFileInputProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (files: File | File[]) => true,\n rejected: (files: File[]) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const { filterAccepted } = useFileFilter(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.modelValue,\n val => wrapInArray(val),\n val => (!props.multiple && Array.isArray(val)) ? val[0] : val,\n )\n const { isFocused, focus, blur } = useFocus(props)\n const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined)\n const totalBytes = computed(() => (model.value ?? []).reduce((bytes, { size = 0 }) => bytes + size, 0))\n const totalBytesReadable = computed(() => humanReadableFileSize(totalBytes.value, base.value))\n\n const fileNames = computed(() => (model.value ?? []).map(file => {\n const { name = '', size = 0 } = file\n const truncatedText = truncateText(name)\n return !props.showSize\n ? truncatedText\n : `${truncatedText} (${humanReadableFileSize(size, base.value)})`\n }))\n\n const counterValue = computed(() => {\n const fileCount = model.value?.length ?? 0\n if (props.showSize) return t(props.counterSizeString, fileCount, totalBytesReadable.value)\n else return t(props.counterString, fileCount)\n })\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = toRef(() => isFocused.value || props.active)\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n const isDragging = shallowRef(false)\n const { handleDrop, hasFilesOrFolders } = useFileDrop()\n\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onClickPrepend (e: MouseEvent) {\n inputRef.value?.click()\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onControlClick (e: MouseEvent) {\n inputRef.value?.click()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = []\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function truncateText (str: string) {\n if (str.length < Number(props.truncateLength)) return str\n const charsKeepOneSide = Math.floor((Number(props.truncateLength) - 1) / 2)\n return `${str.slice(0, charsKeepOneSide)}…${str.slice(str.length - charsKeepOneSide)}`\n }\n function onDragover (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = true\n }\n function onDragleave (e: DragEvent) {\n e.preventDefault()\n isDragging.value = false\n }\n async function onDrop (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = false\n\n if (!inputRef.value || !hasFilesOrFolders(e)) return\n\n const allDroppedFiles = await handleDrop(e)\n selectAccepted(allDroppedFiles)\n }\n\n function onFileSelection (e: Event) {\n if (!e.target || (e as any).repack) return // prevent loop\n\n if (!props.filterByType) {\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n } else {\n selectAccepted([...(e as any).target.files])\n }\n }\n\n function selectAccepted (files: File[]) {\n const dataTransfer = new DataTransfer()\n const { accepted, rejected } = filterAccepted(files)\n\n if (rejected.length) {\n emit('rejected', rejected)\n }\n\n for (const file of accepted) {\n dataTransfer.items.add(file)\n }\n\n inputRef.value!.files = dataTransfer.files\n model.value = [...dataTransfer.files]\n\n const event = new Event('change', { bubbles: true }) as any\n event.repack = true\n inputRef.value!.dispatchEvent(event)\n }\n\n watch(model, newValue => {\n const hasModelReset = !Array.isArray(newValue) || !newValue.length\n\n if (hasModelReset && inputRef.value) {\n inputRef.value.value = ''\n }\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const { modelValue: _, ...inputProps } = VInput.filterProps(props)\n const fieldProps = VField.filterProps(props)\n\n const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false\n const inputAccept = expectsDirectory ? undefined : (props.filterByType ?? String(attrs.accept))\n\n return (\n <VInput\n ref={ vInputRef }\n modelValue={ props.multiple ? model.value : model.value[0] }\n class={[\n 'v-file-input',\n {\n 'v-file-input--chips': !!props.chips,\n 'v-file-input--dragging': isDragging.value,\n 'v-file-input--hide': props.hideInput,\n 'v-input--plain-underlined': isPlainOrUnderlined.value,\n },\n props.class,\n ]}\n style={ props.style }\n onClick:prepend={ onClickPrepend }\n { ...rootAttrs }\n { ...inputProps }\n centerAffix={ !isPlainOrUnderlined.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n hasDetails,\n }) => (\n <VField\n ref={ vFieldRef }\n prependIcon={ props.prependIcon }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n details={ hasDetails.value }\n error={ isValid.value === false }\n onDragover={ onDragover }\n onDrop={ onDrop }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n <input\n ref={ inputRef }\n type=\"file\"\n accept={ inputAccept }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n multiple={ props.multiple }\n name={ props.name }\n onClick={ e => {\n e.stopPropagation()\n\n if (isReadonly.value) e.preventDefault()\n\n onFocus()\n }}\n onChange={ onFileSelection }\n onDragleave={ onDragleave }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n <div class={ fieldClass }>\n { !!model.value?.length && !props.hideInput && (\n slots.selection ? slots.selection({\n fileNames: fileNames.value,\n totalBytes: totalBytes.value,\n totalBytesReadable: totalBytesReadable.value,\n })\n : props.chips ? fileNames.value.map(text => (\n <VChip\n key={ text }\n size=\"small\"\n text={ text }\n />\n ))\n : fileNames.value.join(', ')\n )}\n </div>\n </>\n ),\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ !!model.value?.length }\n value={ counterValue.value }\n disabled={ props.disabled }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VFileInput = InstanceType<typeof VFileInput>\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":"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","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":"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","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-07-31";
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";