vuetify 3.8.3 → 3.8.5

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 (117) hide show
  1. package/dist/_component-variables-labs.sass +1 -0
  2. package/dist/json/attributes.json +4267 -3919
  3. package/dist/json/importMap-labs.json +28 -24
  4. package/dist/json/importMap.json +164 -164
  5. package/dist/json/tags.json +92 -0
  6. package/dist/json/web-types.json +8380 -7153
  7. package/dist/vuetify-labs.cjs +374 -79
  8. package/dist/vuetify-labs.css +3864 -3836
  9. package/dist/vuetify-labs.d.ts +5818 -1810
  10. package/dist/vuetify-labs.esm.js +374 -79
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +374 -79
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +53 -30
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +3556 -3531
  17. package/dist/vuetify.d.ts +4121 -1210
  18. package/dist/vuetify.esm.js +53 -30
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +53 -30
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +30 -27
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VAutocomplete/VAutocomplete.d.ts +795 -77
  26. package/lib/components/VBadge/VBadge.d.ts +22 -46
  27. package/lib/components/VBottomNavigation/VBottomNavigation.d.ts +6 -6
  28. package/lib/components/VBottomSheet/VBottomSheet.css +1 -1
  29. package/lib/components/VBottomSheet/VBottomSheet.d.ts +1434 -80
  30. package/lib/components/VBottomSheet/VBottomSheet.sass +1 -1
  31. package/lib/components/VBtn/VBtn.css +25 -0
  32. package/lib/components/VBtn/VBtn.sass +9 -0
  33. package/lib/components/VBtn/_variables.scss +1 -0
  34. package/lib/components/VCombobox/VCombobox.d.ts +795 -77
  35. package/lib/components/VCounter/VCounter.d.ts +22 -46
  36. package/lib/components/VDataIterator/VDataIterator.d.ts +22 -46
  37. package/lib/components/VDataTable/VDataTable.d.ts +110 -110
  38. package/lib/components/VDataTable/VDataTableHeaders.js +1 -2
  39. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  40. package/lib/components/VDataTable/VDataTableServer.d.ts +62 -189
  41. package/lib/components/VDataTable/VDataTableServer.js.map +1 -1
  42. package/lib/components/VDataTable/VDataTableVirtual.d.ts +62 -189
  43. package/lib/components/VDataTable/VDataTableVirtual.js.map +1 -1
  44. package/lib/components/VDataTable/composables/headers.d.ts +75 -75
  45. package/lib/components/VDataTable/composables/select.js +1 -1
  46. package/lib/components/VDataTable/composables/select.js.map +1 -1
  47. package/lib/components/VDatePicker/VDatePicker.d.ts +3 -3
  48. package/lib/components/VDatePicker/VDatePickerMonth.d.ts +6 -6
  49. package/lib/components/VDialog/VDialog.d.ts +1048 -146
  50. package/lib/components/VDialog/VDialog.js +1 -1
  51. package/lib/components/VDialog/VDialog.js.map +1 -1
  52. package/lib/components/VFab/VFab.d.ts +22 -46
  53. package/lib/components/VFileInput/VFileInput.css +4 -0
  54. package/lib/components/VFileInput/VFileInput.js +21 -3
  55. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  56. package/lib/components/VFileInput/VFileInput.sass +4 -0
  57. package/lib/components/VImg/VImg.d.ts +22 -49
  58. package/lib/components/VLazy/VLazy.d.ts +22 -46
  59. package/lib/components/VMenu/VMenu.d.ts +1048 -146
  60. package/lib/components/VMenu/VMenu.js.map +1 -1
  61. package/lib/components/VMessages/VMessages.d.ts +22 -46
  62. package/lib/components/VNumberInput/VNumberInput.d.ts +3 -3
  63. package/lib/components/VOverlay/VOverlay.d.ts +22 -49
  64. package/lib/components/VOverlay/locationStrategies.js +1 -1
  65. package/lib/components/VOverlay/locationStrategies.js.map +1 -1
  66. package/lib/components/VSelect/VSelect.d.ts +1235 -93
  67. package/lib/components/VSnackbar/VSnackbar.d.ts +58 -109
  68. package/lib/components/VSnackbarQueue/VSnackbarQueue.d.ts +25 -47
  69. package/lib/components/VSnackbarQueue/VSnackbarQueue.js.map +1 -1
  70. package/lib/components/VSpeedDial/VSpeedDial.d.ts +1434 -80
  71. package/lib/components/VTable/VTable.css +2 -6
  72. package/lib/components/VTable/VTable.sass +4 -22
  73. package/lib/components/VTabs/VTabs.d.ts +6 -6
  74. package/lib/components/VTextField/VTextField.js +5 -3
  75. package/lib/components/VTextField/VTextField.js.map +1 -1
  76. package/lib/components/VTooltip/VTooltip.d.ts +58 -109
  77. package/lib/components/VTooltip/VTooltip.js +2 -2
  78. package/lib/components/VTooltip/VTooltip.js.map +1 -1
  79. package/lib/components/transitions/dialog-transition.js +3 -3
  80. package/lib/components/transitions/dialog-transition.js.map +1 -1
  81. package/lib/composables/dateFormat.d.ts +24 -0
  82. package/lib/composables/dateFormat.js +112 -0
  83. package/lib/composables/dateFormat.js.map +1 -0
  84. package/lib/composables/transition.d.ts +10 -20
  85. package/lib/composables/transition.js +15 -12
  86. package/lib/composables/transition.js.map +1 -1
  87. package/lib/entry-bundler.d.ts +6 -6
  88. package/lib/entry-bundler.js +1 -1
  89. package/lib/framework.d.ts +113 -149
  90. package/lib/framework.js +1 -1
  91. package/lib/iconsets/mdi.js +2 -1
  92. package/lib/iconsets/mdi.js.map +1 -1
  93. package/lib/labs/VCalendar/VCalendar.d.ts +3 -3
  94. package/lib/labs/VCalendar/VCalendarDay.d.ts +3 -3
  95. package/lib/labs/VCalendar/VCalendarInterval.d.ts +3 -3
  96. package/lib/labs/VCalendar/VCalendarMonthDay.d.ts +3 -3
  97. package/lib/labs/VColorInput/VColorInput.css +4 -0
  98. package/lib/labs/VColorInput/VColorInput.d.ts +1767 -0
  99. package/lib/labs/VColorInput/VColorInput.js +129 -0
  100. package/lib/labs/VColorInput/VColorInput.js.map +1 -0
  101. package/lib/labs/VColorInput/VColorInput.sass +7 -0
  102. package/lib/labs/VColorInput/_variables.scss +2 -0
  103. package/lib/labs/VColorInput/index.d.ts +1 -0
  104. package/lib/labs/VColorInput/index.js +2 -0
  105. package/lib/labs/VColorInput/index.js.map +1 -0
  106. package/lib/labs/VDateInput/VDateInput.d.ts +96 -34
  107. package/lib/labs/VDateInput/VDateInput.js +71 -17
  108. package/lib/labs/VDateInput/VDateInput.js.map +1 -1
  109. package/lib/labs/VFileUpload/VFileUpload.js +19 -31
  110. package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
  111. package/lib/labs/VTimePicker/VTimePickerClock.js +2 -2
  112. package/lib/labs/VTimePicker/VTimePickerClock.js.map +1 -1
  113. package/lib/labs/components.d.ts +1 -0
  114. package/lib/labs/components.js +1 -0
  115. package/lib/labs/components.js.map +1 -1
  116. package/lib/util/helpers.js.map +1 -1
  117. package/package.json +7 -8
@@ -79,7 +79,7 @@ export const VDialog = genericComponent()({
79
79
  }
80
80
  function onAfterEnter() {
81
81
  emit('afterEnter');
82
- if (overlay.value?.contentEl && !overlay.value.contentEl.contains(document.activeElement)) {
82
+ if ((props.scrim || props.retainFocus) && overlay.value?.contentEl && !overlay.value.contentEl.contains(document.activeElement)) {
83
83
  overlay.value.contentEl.focus({
84
84
  preventScroll: true
85
85
  });
@@ -1 +1 @@
1
- {"version":3,"file":"VDialog.js","names":["VDialogTransition","VDefaultsProvider","VOverlay","makeVOverlayProps","forwardRefs","useProxiedModel","useScopeId","mergeProps","nextTick","onBeforeUnmount","ref","watch","focusableChildren","genericComponent","IN_BROWSER","propsFactory","useRender","makeVDialogProps","fullscreen","Boolean","retainFocus","type","default","scrollable","origin","scrollStrategy","transition","component","zIndex","VDialog","name","props","emits","value","afterEnter","afterLeave","setup","_ref","emit","slots","isActive","scopeId","overlay","onFocusin","e","before","relatedTarget","after","target","contentEl","globalTop","document","includes","contains","focusable","length","firstElement","lastElement","focus","removeEventListener","val","addEventListener","immediate","onAfterEnter","activeElement","preventScroll","onAfterLeave","activatorEl","overlayProps","filterProps","activatorProps","contentProps","tabindex","_createVNode","_mergeProps","class","style","$event","height","undefined","width","maxHeight","maxWidth","activator","_len","arguments","args","Array","_key"],"sources":["../../../src/components/VDialog/VDialog.tsx"],"sourcesContent":["// Styles\nimport './VDialog.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport { mergeProps, nextTick, onBeforeUnmount, ref, watch } from 'vue'\nimport { focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Component } from 'vue'\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVDialogProps = propsFactory({\n fullscreen: Boolean,\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n\n ...makeVOverlayProps({\n origin: 'center center' as const,\n scrollStrategy: 'block' as const,\n transition: { component: VDialogTransition as Component },\n zIndex: 2400,\n }),\n}, 'VDialog')\n\nexport const VDialog = genericComponent<OverlaySlots>()({\n name: 'VDialog',\n\n props: makeVDialogProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n afterEnter: () => true,\n afterLeave: () => true,\n },\n\n setup (props, { emit, slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { scopeId } = useScopeId()\n\n const overlay = ref<VOverlay>()\n function onFocusin (e: FocusEvent) {\n const before = e.relatedTarget as HTMLElement | null\n const after = e.target as HTMLElement | null\n\n if (\n before !== after &&\n overlay.value?.contentEl &&\n // We're the topmost dialog\n overlay.value?.globalTop &&\n // It isn't the document or the dialog body\n ![document, overlay.value.contentEl].includes(after!) &&\n // It isn't inside the dialog body\n !overlay.value.contentEl.contains(after)\n ) {\n const focusable = focusableChildren(overlay.value.contentEl)\n\n if (!focusable.length) return\n\n const firstElement = focusable[0]\n const lastElement = focusable[focusable.length - 1]\n\n if (before === firstElement) {\n lastElement.focus()\n } else {\n firstElement.focus()\n }\n }\n }\n\n onBeforeUnmount(() => {\n document.removeEventListener('focusin', onFocusin)\n })\n\n if (IN_BROWSER) {\n watch(() => isActive.value && props.retainFocus, val => {\n val\n ? document.addEventListener('focusin', onFocusin)\n : document.removeEventListener('focusin', onFocusin)\n }, { immediate: true })\n }\n\n function onAfterEnter () {\n emit('afterEnter')\n if (overlay.value?.contentEl && !overlay.value.contentEl.contains(document.activeElement)) {\n overlay.value.contentEl.focus({ preventScroll: true })\n }\n }\n\n function onAfterLeave () {\n emit('afterLeave')\n }\n\n watch(isActive, async val => {\n if (!val) {\n await nextTick()\n overlay.value!.activatorEl?.focus({ preventScroll: true })\n }\n })\n\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props)\n const activatorProps = mergeProps({\n 'aria-haspopup': 'dialog',\n }, props.activatorProps)\n const contentProps = mergeProps({\n tabindex: -1,\n }, props.contentProps)\n\n return (\n <VOverlay\n ref={ overlay }\n class={[\n 'v-dialog',\n {\n 'v-dialog--fullscreen': props.fullscreen,\n 'v-dialog--scrollable': props.scrollable,\n },\n props.class,\n ]}\n style={ props.style }\n { ...overlayProps }\n v-model={ isActive.value }\n aria-modal=\"true\"\n activatorProps={ activatorProps }\n contentProps={ contentProps }\n height={ !props.fullscreen ? props.height : undefined }\n width={ !props.fullscreen ? props.width : undefined }\n maxHeight={ !props.fullscreen ? props.maxHeight : undefined }\n maxWidth={ !props.fullscreen ? props.maxWidth : undefined }\n role=\"dialog\"\n onAfterEnter={ onAfterEnter }\n onAfterLeave={ onAfterLeave }\n { ...scopeId }\n >\n {{\n activator: slots.activator,\n default: (...args) => (\n <VDefaultsProvider root=\"VDialog\">\n { slots.default?.(...args) }\n </VDefaultsProvider>\n ),\n }}\n </VOverlay>\n )\n })\n\n return forwardRefs({}, overlay)\n },\n})\n\nexport type VDialog = InstanceType<typeof VDialog>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VDialog.js","names":["VDialogTransition","VDefaultsProvider","VOverlay","makeVOverlayProps","forwardRefs","useProxiedModel","useScopeId","mergeProps","nextTick","onBeforeUnmount","ref","watch","focusableChildren","genericComponent","IN_BROWSER","propsFactory","useRender","makeVDialogProps","fullscreen","Boolean","retainFocus","type","default","scrollable","origin","scrollStrategy","transition","component","zIndex","VDialog","name","props","emits","value","afterEnter","afterLeave","setup","_ref","emit","slots","isActive","scopeId","overlay","onFocusin","e","before","relatedTarget","after","target","contentEl","globalTop","document","includes","contains","focusable","length","firstElement","lastElement","focus","removeEventListener","val","addEventListener","immediate","onAfterEnter","scrim","activeElement","preventScroll","onAfterLeave","activatorEl","overlayProps","filterProps","activatorProps","contentProps","tabindex","_createVNode","_mergeProps","class","style","$event","height","undefined","width","maxHeight","maxWidth","activator","_len","arguments","args","Array","_key"],"sources":["../../../src/components/VDialog/VDialog.tsx"],"sourcesContent":["// Styles\nimport './VDialog.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport { mergeProps, nextTick, onBeforeUnmount, ref, watch } from 'vue'\nimport { focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVDialogProps = propsFactory({\n fullscreen: Boolean,\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n\n ...makeVOverlayProps({\n origin: 'center center' as const,\n scrollStrategy: 'block' as const,\n transition: { component: VDialogTransition },\n zIndex: 2400,\n }),\n}, 'VDialog')\n\nexport const VDialog = genericComponent<OverlaySlots>()({\n name: 'VDialog',\n\n props: makeVDialogProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n afterEnter: () => true,\n afterLeave: () => true,\n },\n\n setup (props, { emit, slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { scopeId } = useScopeId()\n\n const overlay = ref<VOverlay>()\n function onFocusin (e: FocusEvent) {\n const before = e.relatedTarget as HTMLElement | null\n const after = e.target as HTMLElement | null\n\n if (\n before !== after &&\n overlay.value?.contentEl &&\n // We're the topmost dialog\n overlay.value?.globalTop &&\n // It isn't the document or the dialog body\n ![document, overlay.value.contentEl].includes(after!) &&\n // It isn't inside the dialog body\n !overlay.value.contentEl.contains(after)\n ) {\n const focusable = focusableChildren(overlay.value.contentEl)\n\n if (!focusable.length) return\n\n const firstElement = focusable[0]\n const lastElement = focusable[focusable.length - 1]\n\n if (before === firstElement) {\n lastElement.focus()\n } else {\n firstElement.focus()\n }\n }\n }\n\n onBeforeUnmount(() => {\n document.removeEventListener('focusin', onFocusin)\n })\n\n if (IN_BROWSER) {\n watch(() => isActive.value && props.retainFocus, val => {\n val\n ? document.addEventListener('focusin', onFocusin)\n : document.removeEventListener('focusin', onFocusin)\n }, { immediate: true })\n }\n\n function onAfterEnter () {\n emit('afterEnter')\n if (\n (props.scrim || props.retainFocus) &&\n overlay.value?.contentEl &&\n !overlay.value.contentEl.contains(document.activeElement)\n ) {\n overlay.value.contentEl.focus({ preventScroll: true })\n }\n }\n\n function onAfterLeave () {\n emit('afterLeave')\n }\n\n watch(isActive, async val => {\n if (!val) {\n await nextTick()\n overlay.value!.activatorEl?.focus({ preventScroll: true })\n }\n })\n\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props)\n const activatorProps = mergeProps({\n 'aria-haspopup': 'dialog',\n }, props.activatorProps)\n const contentProps = mergeProps({\n tabindex: -1,\n }, props.contentProps)\n\n return (\n <VOverlay\n ref={ overlay }\n class={[\n 'v-dialog',\n {\n 'v-dialog--fullscreen': props.fullscreen,\n 'v-dialog--scrollable': props.scrollable,\n },\n props.class,\n ]}\n style={ props.style }\n { ...overlayProps }\n v-model={ isActive.value }\n aria-modal=\"true\"\n activatorProps={ activatorProps }\n contentProps={ contentProps }\n height={ !props.fullscreen ? props.height : undefined }\n width={ !props.fullscreen ? props.width : undefined }\n maxHeight={ !props.fullscreen ? props.maxHeight : undefined }\n maxWidth={ !props.fullscreen ? props.maxWidth : undefined }\n role=\"dialog\"\n onAfterEnter={ onAfterEnter }\n onAfterLeave={ onAfterLeave }\n { ...scopeId }\n >\n {{\n activator: slots.activator,\n default: (...args) => (\n <VDefaultsProvider root=\"VDialog\">\n { slots.default?.(...args) }\n </VDefaultsProvider>\n ),\n }}\n </VOverlay>\n )\n })\n\n return forwardRefs({}, overlay)\n },\n})\n\nexport type VDialog = InstanceType<typeof VDialog>\n"],"mappings":"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","ignoreList":[]}
@@ -52,43 +52,31 @@ export declare const makeVFabProps: <Defaults extends {
52
52
  offset?: unknown;
53
53
  modelValue?: unknown;
54
54
  } = {}>(defaults?: Defaults | undefined) => {
55
- transition: unknown extends Defaults["transition"] ? Omit<{
55
+ transition: unknown extends Defaults["transition"] ? {
56
56
  type: import("vue").PropType<string | boolean | (import("vue").TransitionProps & {
57
57
  component?: import("vue").Component;
58
- })>;
59
- default: string;
60
- validator: (val: unknown) => boolean;
61
- }, "type" | "default"> & {
62
- type: import("vue").PropType<string | boolean | (import("vue").TransitionProps & {
63
- component?: import("vue").Component;
64
- })>;
58
+ }) | null>;
65
59
  default: NonNullable<string | boolean | (import("vue").TransitionProps & {
66
60
  component?: import("vue").Component;
67
- })>;
68
- } : Omit<Omit<{
69
- type: import("vue").PropType<string | boolean | (import("vue").TransitionProps & {
70
- component?: import("vue").Component;
71
- })>;
72
- default: string;
73
- validator: (val: unknown) => boolean;
74
- }, "type" | "default"> & {
61
+ }) | null>;
62
+ } : Omit<{
75
63
  type: import("vue").PropType<string | boolean | (import("vue").TransitionProps & {
76
64
  component?: import("vue").Component;
77
- })>;
65
+ }) | null>;
78
66
  default: NonNullable<string | boolean | (import("vue").TransitionProps & {
79
67
  component?: import("vue").Component;
80
- })>;
68
+ }) | null>;
81
69
  }, "type" | "default"> & {
82
70
  type: import("vue").PropType<unknown extends Defaults["transition"] ? string | boolean | (import("vue").TransitionProps & {
83
71
  component?: import("vue").Component;
84
- }) : string | boolean | (import("vue").TransitionProps & {
72
+ }) | null : string | boolean | (import("vue").TransitionProps & {
85
73
  component?: import("vue").Component;
86
- }) | Defaults["transition"]>;
74
+ }) | Defaults["transition"] | null>;
87
75
  default: unknown extends Defaults["transition"] ? string | boolean | (import("vue").TransitionProps & {
88
76
  component?: import("vue").Component;
89
- }) : NonNullable<string | boolean | (import("vue").TransitionProps & {
77
+ }) | null : NonNullable<string | boolean | (import("vue").TransitionProps & {
90
78
  component?: import("vue").Component;
91
- })> | Defaults["transition"];
79
+ }) | null> | Defaults["transition"];
92
80
  };
93
81
  location: unknown extends Defaults["location"] ? import("vue").PropType<import("../../util/index.js").Anchor | null> : {
94
82
  type: import("vue").PropType<unknown extends Defaults["location"] ? import("../../util/index.js").Anchor | null : import("../../util/index.js").Anchor | Defaults["location"] | null>;
@@ -427,7 +415,7 @@ export declare const VFab: {
427
415
  order: string | number;
428
416
  transition: string | boolean | (import("vue").TransitionProps & {
429
417
  component?: import("vue").Component;
430
- });
418
+ }) | null;
431
419
  style: import("vue").StyleValue;
432
420
  disabled: boolean;
433
421
  size: string | number;
@@ -498,7 +486,7 @@ export declare const VFab: {
498
486
  order: string | number;
499
487
  transition: string | boolean | (import("vue").TransitionProps & {
500
488
  component?: import("vue").Component;
501
- });
489
+ }) | null;
502
490
  style: import("vue").StyleValue;
503
491
  text: string | number | boolean;
504
492
  disabled: boolean;
@@ -540,7 +528,7 @@ export declare const VFab: {
540
528
  order: string | number;
541
529
  transition: string | boolean | (import("vue").TransitionProps & {
542
530
  component?: import("vue").Component;
543
- });
531
+ }) | null;
544
532
  style: import("vue").StyleValue;
545
533
  disabled: boolean;
546
534
  size: string | number;
@@ -609,7 +597,7 @@ export declare const VFab: {
609
597
  order: string | number;
610
598
  transition: string | boolean | (import("vue").TransitionProps & {
611
599
  component?: import("vue").Component;
612
- });
600
+ }) | null;
613
601
  style: import("vue").StyleValue;
614
602
  text: string | number | boolean;
615
603
  disabled: boolean;
@@ -646,7 +634,7 @@ export declare const VFab: {
646
634
  order: string | number;
647
635
  transition: string | boolean | (import("vue").TransitionProps & {
648
636
  component?: import("vue").Component;
649
- });
637
+ }) | null;
650
638
  style: import("vue").StyleValue;
651
639
  disabled: boolean;
652
640
  size: string | number;
@@ -717,7 +705,7 @@ export declare const VFab: {
717
705
  order: string | number;
718
706
  transition: string | boolean | (import("vue").TransitionProps & {
719
707
  component?: import("vue").Component;
720
- });
708
+ }) | null;
721
709
  style: import("vue").StyleValue;
722
710
  text: string | number | boolean;
723
711
  disabled: boolean;
@@ -740,19 +728,13 @@ export declare const VFab: {
740
728
  }, {}, string, import("vue").SlotsType<Partial<{
741
729
  default: () => import("vue").VNode[];
742
730
  }>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
743
- transition: Omit<{
744
- type: import("vue").PropType<string | boolean | (import("vue").TransitionProps & {
745
- component?: import("vue").Component;
746
- })>;
747
- default: string;
748
- validator: (val: unknown) => boolean;
749
- }, "type" | "default"> & {
731
+ transition: {
750
732
  type: import("vue").PropType<string | boolean | (import("vue").TransitionProps & {
751
733
  component?: import("vue").Component;
752
- })>;
734
+ }) | null>;
753
735
  default: NonNullable<string | boolean | (import("vue").TransitionProps & {
754
736
  component?: import("vue").Component;
755
- })>;
737
+ }) | null>;
756
738
  };
757
739
  location: import("vue").PropType<import("../../util/index.js").Anchor | null>;
758
740
  name: {
@@ -861,19 +843,13 @@ export declare const VFab: {
861
843
  default: boolean;
862
844
  };
863
845
  }, import("vue").ExtractPropTypes<{
864
- transition: Omit<{
865
- type: import("vue").PropType<string | boolean | (import("vue").TransitionProps & {
866
- component?: import("vue").Component;
867
- })>;
868
- default: string;
869
- validator: (val: unknown) => boolean;
870
- }, "type" | "default"> & {
846
+ transition: {
871
847
  type: import("vue").PropType<string | boolean | (import("vue").TransitionProps & {
872
848
  component?: import("vue").Component;
873
- })>;
849
+ }) | null>;
874
850
  default: NonNullable<string | boolean | (import("vue").TransitionProps & {
875
851
  component?: import("vue").Component;
876
- })>;
852
+ }) | null>;
877
853
  };
878
854
  location: import("vue").PropType<import("../../util/index.js").Anchor | null>;
879
855
  name: {
@@ -20,6 +20,10 @@
20
20
  position: absolute;
21
21
  top: 0;
22
22
  width: 100%;
23
+ z-index: 0;
24
+ }
25
+ .v-file-input--dragging input[type=file] {
26
+ z-index: 1;
23
27
  }
24
28
  .v-file-input .v-input__details {
25
29
  padding-inline: 16px;
@@ -12,7 +12,7 @@ import { useFocus } from "../../composables/focus.js";
12
12
  import { forwardRefs } from "../../composables/forwardRefs.js";
13
13
  import { useLocale } from "../../composables/locale.js";
14
14
  import { useProxiedModel } from "../../composables/proxiedModel.js"; // Utilities
15
- import { computed, nextTick, ref, toRef, watch } from 'vue';
15
+ import { computed, nextTick, ref, shallowRef, toRef, watch } from 'vue';
16
16
  import { callEvent, filterInputAttrs, genericComponent, humanReadableFileSize, propsFactory, useRender, wrapInArray } from "../../util/index.js"; // Types
17
17
  export const makeVFileInputProps = propsFactory({
18
18
  chips: Boolean,
@@ -97,6 +97,7 @@ export const VFileInput = genericComponent()({
97
97
  const inputRef = ref();
98
98
  const isActive = toRef(() => isFocused.value || props.active);
99
99
  const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));
100
+ const isDragging = shallowRef(false);
100
101
  function onFocus() {
101
102
  if (inputRef.value !== document.activeElement) {
102
103
  inputRef.value?.focus();
@@ -123,11 +124,26 @@ export const VFileInput = genericComponent()({
123
124
  }
124
125
  function onDragover(e) {
125
126
  e.preventDefault();
127
+ e.stopImmediatePropagation();
128
+ isDragging.value = true;
129
+ }
130
+ function onDragleave(e) {
131
+ e.preventDefault();
132
+ isDragging.value = false;
126
133
  }
127
134
  function onDrop(e) {
128
135
  e.preventDefault();
129
- if (!e.dataTransfer) return;
130
- model.value = [...(e.dataTransfer.files ?? [])];
136
+ e.stopImmediatePropagation();
137
+ isDragging.value = false;
138
+ if (!e.dataTransfer?.files?.length || !inputRef.value) return;
139
+ const dataTransfer = new DataTransfer();
140
+ for (const file of e.dataTransfer.files) {
141
+ dataTransfer.items.add(file);
142
+ }
143
+ inputRef.value.files = dataTransfer.files;
144
+ inputRef.value.dispatchEvent(new Event('change', {
145
+ bubbles: true
146
+ }));
131
147
  }
132
148
  watch(model, newValue => {
133
149
  const hasModelReset = !Array.isArray(newValue) || !newValue.length;
@@ -149,6 +165,7 @@ export const VFileInput = genericComponent()({
149
165
  "modelValue": props.multiple ? model.value : model.value[0],
150
166
  "class": ['v-file-input', {
151
167
  'v-file-input--chips': !!props.chips,
168
+ 'v-file-input--dragging': isDragging.value,
152
169
  'v-file-input--hide': props.hideInput,
153
170
  'v-input--plain-underlined': isPlainOrUnderlined.value
154
171
  }, props.class],
@@ -210,6 +227,7 @@ export const VFileInput = genericComponent()({
210
227
  const target = e.target;
211
228
  model.value = [...(target.files ?? [])];
212
229
  },
230
+ "onDragleave": onDragleave,
213
231
  "onFocus": onFocus,
214
232
  "onBlur": blur
215
233
  }, slotProps, inputAttrs), null), _createVNode("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"VFileInput.js","names":["VChip","VCounter","VField","makeVFieldProps","makeVInputProps","VInput","useFocus","forwardRefs","useLocale","useProxiedModel","computed","nextTick","ref","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","setup","_ref","attrs","emit","slots","t","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","onFocus","document","activeElement","onClickPrepend","click","onControlMousedown","onControlClick","onClear","stopPropagation","onDragover","preventDefault","onDrop","dataTransfer","newValue","hasModelReset","hasCounter","hasDetails","details","rootAttrs","inputAttrs","_","inputProps","filterProps","fieldProps","_createVNode","_mergeProps","class","style","_ref3","id","isDisabled","isDirty","isReadonly","isValid","dirty","_ref4","fieldClass","slotProps","_Fragment","target","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 { 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, 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 ...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 },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\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 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 }\n function onDrop (e: DragEvent) {\n e.preventDefault()\n\n if (!e.dataTransfer) return\n\n model.value = [...e.dataTransfer.files ?? []]\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 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--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 }) => (\n <VField\n ref={ vFieldRef }\n prepend-icon={ 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 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 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={ e => {\n if (!e.target) return\n\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n }}\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","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","setup","_ref","attrs","emit","slots","t","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","onFocus","document","activeElement","onClickPrepend","click","onControlMousedown","onControlClick","onClear","stopPropagation","onDragover","preventDefault","stopImmediatePropagation","onDragleave","onDrop","dataTransfer","DataTransfer","items","add","dispatchEvent","Event","bubbles","newValue","hasModelReset","hasCounter","hasDetails","details","rootAttrs","inputAttrs","_","inputProps","filterProps","fieldProps","_createVNode","_mergeProps","class","style","_ref3","id","isDisabled","isDirty","isReadonly","isValid","dirty","_ref4","fieldClass","slotProps","_Fragment","target","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 { 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 ...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 },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\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\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 function onDrop (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = false\n\n if (!e.dataTransfer?.files?.length || !inputRef.value) return\n\n const dataTransfer = new DataTransfer()\n\n for (const file of e.dataTransfer.files) {\n dataTransfer.items.add(file)\n }\n\n inputRef.value.files = dataTransfer.files\n inputRef.value.dispatchEvent(new Event('change', { bubbles: true }))\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 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 }) => (\n <VField\n ref={ vFieldRef }\n prepend-icon={ 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 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 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={ e => {\n if (!e.target) return\n\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n }}\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":[]}
@@ -31,6 +31,10 @@
31
31
  position: absolute
32
32
  top: 0
33
33
  width: 100%
34
+ z-index: 0
35
+
36
+ &--dragging input[type="file"]
37
+ z-index: 1
34
38
 
35
39
  .v-input__details
36
40
  padding-inline: $file-input-details-padding-inline
@@ -42,29 +42,19 @@ export declare const makeVImgProps: <Defaults extends {
42
42
  srcset?: unknown;
43
43
  position?: unknown;
44
44
  } = {}>(defaults?: Defaults | undefined) => {
45
- transition: unknown extends Defaults["transition"] ? {
46
- type: PropType<string | boolean | (import("vue").TransitionProps & {
47
- component?: import("vue").Component;
48
- })>;
49
- default: string;
50
- validator: (val: unknown) => boolean;
51
- } : Omit<{
52
- type: PropType<string | boolean | (import("vue").TransitionProps & {
53
- component?: import("vue").Component;
54
- })>;
55
- default: string;
56
- validator: (val: unknown) => boolean;
57
- }, "type" | "default"> & {
45
+ transition: unknown extends Defaults["transition"] ? import("vue").Prop<string | boolean | (import("vue").TransitionProps & {
46
+ component?: import("vue").Component;
47
+ }) | null> : {
58
48
  type: PropType<unknown extends Defaults["transition"] ? string | boolean | (import("vue").TransitionProps & {
59
49
  component?: import("vue").Component;
60
- }) : string | boolean | (import("vue").TransitionProps & {
50
+ }) | null : string | boolean | (import("vue").TransitionProps & {
61
51
  component?: import("vue").Component;
62
- }) | Defaults["transition"]>;
52
+ }) | Defaults["transition"] | null>;
63
53
  default: unknown extends Defaults["transition"] ? string | boolean | (import("vue").TransitionProps & {
64
54
  component?: import("vue").Component;
65
- }) : NonNullable<string | boolean | (import("vue").TransitionProps & {
55
+ }) | null : NonNullable<string | boolean | (import("vue").TransitionProps & {
66
56
  component?: import("vue").Component;
67
- })> | Defaults["transition"];
57
+ }) | null> | Defaults["transition"];
68
58
  };
69
59
  rounded: unknown extends Defaults["rounded"] ? {
70
60
  type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
@@ -221,9 +211,6 @@ export declare const VImg: {
221
211
  new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
222
212
  inline: boolean;
223
213
  absolute: boolean;
224
- transition: string | boolean | (import("vue").TransitionProps & {
225
- component?: import("vue").Component;
226
- });
227
214
  style: import("vue").StyleValue;
228
215
  eager: boolean;
229
216
  options: IntersectionObserverInit;
@@ -240,6 +227,9 @@ export declare const VImg: {
240
227
  minHeight?: string | number | undefined;
241
228
  minWidth?: string | number | undefined;
242
229
  position?: string | undefined;
230
+ transition?: string | boolean | (import("vue").TransitionProps & {
231
+ component?: import("vue").Component;
232
+ }) | null | undefined;
243
233
  draggable?: boolean | "false" | "true" | undefined;
244
234
  class?: any;
245
235
  alt?: string | undefined;
@@ -286,9 +276,6 @@ export declare const VImg: {
286
276
  }, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
287
277
  inline: boolean;
288
278
  absolute: boolean;
289
- transition: string | boolean | (import("vue").TransitionProps & {
290
- component?: import("vue").Component;
291
- });
292
279
  style: import("vue").StyleValue;
293
280
  draggable: boolean | "false" | "true";
294
281
  eager: boolean;
@@ -312,9 +299,6 @@ export declare const VImg: {
312
299
  }, {
313
300
  inline: boolean;
314
301
  absolute: boolean;
315
- transition: string | boolean | (import("vue").TransitionProps & {
316
- component?: import("vue").Component;
317
- });
318
302
  style: import("vue").StyleValue;
319
303
  eager: boolean;
320
304
  options: IntersectionObserverInit;
@@ -331,6 +315,9 @@ export declare const VImg: {
331
315
  minHeight?: string | number | undefined;
332
316
  minWidth?: string | number | undefined;
333
317
  position?: string | undefined;
318
+ transition?: string | boolean | (import("vue").TransitionProps & {
319
+ component?: import("vue").Component;
320
+ }) | null | undefined;
334
321
  draggable?: boolean | "false" | "true" | undefined;
335
322
  class?: any;
336
323
  alt?: string | undefined;
@@ -373,9 +360,6 @@ export declare const VImg: {
373
360
  }, {}, {}, {}, {
374
361
  inline: boolean;
375
362
  absolute: boolean;
376
- transition: string | boolean | (import("vue").TransitionProps & {
377
- component?: import("vue").Component;
378
- });
379
363
  style: import("vue").StyleValue;
380
364
  draggable: boolean | "false" | "true";
381
365
  eager: boolean;
@@ -391,9 +375,6 @@ export declare const VImg: {
391
375
  } & import("vue").ComponentOptionsBase<{
392
376
  inline: boolean;
393
377
  absolute: boolean;
394
- transition: string | boolean | (import("vue").TransitionProps & {
395
- component?: import("vue").Component;
396
- });
397
378
  style: import("vue").StyleValue;
398
379
  eager: boolean;
399
380
  options: IntersectionObserverInit;
@@ -410,6 +391,9 @@ export declare const VImg: {
410
391
  minHeight?: string | number | undefined;
411
392
  minWidth?: string | number | undefined;
412
393
  position?: string | undefined;
394
+ transition?: string | boolean | (import("vue").TransitionProps & {
395
+ component?: import("vue").Component;
396
+ }) | null | undefined;
413
397
  draggable?: boolean | "false" | "true" | undefined;
414
398
  class?: any;
415
399
  alt?: string | undefined;
@@ -456,9 +440,6 @@ export declare const VImg: {
456
440
  }, string, {
457
441
  inline: boolean;
458
442
  absolute: boolean;
459
- transition: string | boolean | (import("vue").TransitionProps & {
460
- component?: import("vue").Component;
461
- });
462
443
  style: import("vue").StyleValue;
463
444
  draggable: boolean | "false" | "true";
464
445
  eager: boolean;
@@ -473,13 +454,9 @@ export declare const VImg: {
473
454
  error: () => import("vue").VNode[];
474
455
  sources: () => import("vue").VNode[];
475
456
  }>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
476
- transition: {
477
- type: PropType<string | boolean | (import("vue").TransitionProps & {
478
- component?: import("vue").Component;
479
- })>;
480
- default: string;
481
- validator: (val: unknown) => boolean;
482
- };
457
+ transition: import("vue").Prop<null | string | boolean | (import("vue").TransitionProps & {
458
+ component?: import("vue").Component;
459
+ })>;
483
460
  rounded: {
484
461
  type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
485
462
  default: undefined;
@@ -528,13 +505,9 @@ export declare const VImg: {
528
505
  srcset: StringConstructor;
529
506
  position: StringConstructor;
530
507
  }, import("vue").ExtractPropTypes<{
531
- transition: {
532
- type: PropType<string | boolean | (import("vue").TransitionProps & {
533
- component?: import("vue").Component;
534
- })>;
535
- default: string;
536
- validator: (val: unknown) => boolean;
537
- };
508
+ transition: import("vue").Prop<null | string | boolean | (import("vue").TransitionProps & {
509
+ component?: import("vue").Component;
510
+ })>;
538
511
  rounded: {
539
512
  type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
540
513
  default: undefined;