vuetify 3.7.14 → 3.7.16

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 (198) hide show
  1. package/dist/json/attributes.json +3550 -3550
  2. package/dist/json/importMap-labs.json +28 -28
  3. package/dist/json/importMap.json +162 -162
  4. package/dist/json/tags.json +3 -3
  5. package/dist/json/web-types.json +6475 -6452
  6. package/dist/vuetify-labs.css +5395 -5391
  7. package/dist/vuetify-labs.d.ts +453 -215
  8. package/dist/vuetify-labs.esm.js +254 -151
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +253 -150
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +3635 -3635
  13. package/dist/vuetify.d.ts +389 -209
  14. package/dist/vuetify.esm.js +105 -70
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +104 -69
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +229 -227
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAppBar/index.d.mts +15 -6
  22. package/lib/components/VAutocomplete/index.d.mts +23 -8
  23. package/lib/components/VBadge/VBadge.mjs +2 -2
  24. package/lib/components/VBadge/VBadge.mjs.map +1 -1
  25. package/lib/components/VBtn/VBtn.mjs +6 -3
  26. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  27. package/lib/components/VBtn/index.d.mts +15 -6
  28. package/lib/components/VCard/VCard.mjs +12 -3
  29. package/lib/components/VCard/VCard.mjs.map +1 -1
  30. package/lib/components/VCard/VCardItem.mjs +11 -4
  31. package/lib/components/VCard/VCardItem.mjs.map +1 -1
  32. package/lib/components/VCard/index.d.mts +75 -30
  33. package/lib/components/VCarousel/VCarousel.mjs +1 -1
  34. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  35. package/lib/components/VChip/VChip.mjs +6 -3
  36. package/lib/components/VChip/VChip.mjs.map +1 -1
  37. package/lib/components/VChip/index.d.mts +15 -6
  38. package/lib/components/VCombobox/index.d.mts +23 -8
  39. package/lib/components/VDataIterator/index.d.mts +2 -2
  40. package/lib/components/VDataTable/composables/headers.mjs +3 -1
  41. package/lib/components/VDataTable/composables/headers.mjs.map +1 -1
  42. package/lib/components/VDataTable/composables/paginate.mjs +2 -2
  43. package/lib/components/VDataTable/composables/paginate.mjs.map +1 -1
  44. package/lib/components/VDataTable/index.d.mts +34 -34
  45. package/lib/components/VDataTable/types.mjs.map +1 -1
  46. package/lib/components/VDatePicker/VDatePickerMonth.mjs +12 -21
  47. package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  48. package/lib/components/VDatePicker/index.d.mts +3 -3
  49. package/lib/components/VDialog/index.d.mts +21 -6
  50. package/lib/components/VFab/index.d.mts +15 -6
  51. package/lib/components/VList/VListItem.mjs +13 -5
  52. package/lib/components/VList/VListItem.mjs.map +1 -1
  53. package/lib/components/VList/index.d.mts +32 -14
  54. package/lib/components/VMenu/index.d.mts +21 -6
  55. package/lib/components/VOtpInput/VOtpInput.mjs +1 -1
  56. package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
  57. package/lib/components/VOverlay/VOverlay.mjs +10 -1
  58. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  59. package/lib/components/VOverlay/index.d.mts +6 -0
  60. package/lib/components/VPagination/VPagination.mjs +3 -3
  61. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  62. package/lib/components/VParallax/VParallax.mjs +1 -1
  63. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  64. package/lib/components/VRating/VRating.mjs +1 -1
  65. package/lib/components/VRating/VRating.mjs.map +1 -1
  66. package/lib/components/VSelect/index.d.mts +23 -8
  67. package/lib/components/VSlider/slider.mjs +2 -1
  68. package/lib/components/VSlider/slider.mjs.map +1 -1
  69. package/lib/components/VSnackbar/index.d.mts +21 -6
  70. package/lib/components/VSparkline/VBarline.mjs +1 -1
  71. package/lib/components/VSparkline/VBarline.mjs.map +1 -1
  72. package/lib/components/VTabs/index.d.mts +39 -24
  73. package/lib/components/VTextarea/VTextarea.mjs +2 -2
  74. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  75. package/lib/components/VTooltip/index.d.mts +21 -6
  76. package/lib/components/index.d.mts +333 -153
  77. package/lib/composables/stack.mjs +2 -2
  78. package/lib/composables/stack.mjs.map +1 -1
  79. package/lib/composables/validation.mjs +2 -2
  80. package/lib/composables/validation.mjs.map +1 -1
  81. package/lib/entry-bundler.mjs +1 -1
  82. package/lib/framework.mjs +1 -1
  83. package/lib/index.d.mts +56 -56
  84. package/lib/labs/VDateInput/VDateInput.mjs +5 -4
  85. package/lib/labs/VDateInput/VDateInput.mjs.map +1 -1
  86. package/lib/labs/VDateInput/index.d.mts +10 -10
  87. package/lib/labs/VFileUpload/VFileUpload.css +5 -1
  88. package/lib/labs/VFileUpload/VFileUpload.mjs +3 -2
  89. package/lib/labs/VFileUpload/VFileUpload.mjs.map +1 -1
  90. package/lib/labs/VFileUpload/VFileUpload.sass +4 -0
  91. package/lib/labs/VFileUpload/_variables.scss +1 -1
  92. package/lib/labs/VFileUpload/index.d.mts +32 -14
  93. package/lib/labs/VNumberInput/VNumberInput.mjs +60 -24
  94. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  95. package/lib/labs/VNumberInput/hold.mjs +31 -0
  96. package/lib/labs/VNumberInput/hold.mjs.map +1 -0
  97. package/lib/labs/VNumberInput/index.d.mts +1 -7
  98. package/lib/labs/VSnackbarQueue/index.d.mts +21 -6
  99. package/lib/labs/VTimePicker/VTimePicker.mjs +30 -31
  100. package/lib/labs/VTimePicker/VTimePicker.mjs.map +1 -1
  101. package/lib/labs/VTimePicker/VTimePickerControls.mjs +14 -13
  102. package/lib/labs/VTimePicker/VTimePickerControls.mjs.map +1 -1
  103. package/lib/labs/VTimePicker/index.d.mts +35 -13
  104. package/lib/labs/VTimePicker/shared.mjs +2 -0
  105. package/lib/labs/VTimePicker/shared.mjs.map +1 -0
  106. package/lib/labs/VTreeview/VTreeviewItem.mjs +11 -4
  107. package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -1
  108. package/lib/labs/VTreeview/index.d.mts +46 -22
  109. package/lib/labs/components.d.mts +143 -70
  110. package/lib/locale/adapters/vuetify.mjs +1 -1
  111. package/lib/locale/adapters/vuetify.mjs.map +1 -1
  112. package/lib/locale/af.mjs +42 -42
  113. package/lib/locale/af.mjs.map +1 -1
  114. package/lib/locale/az.mjs +7 -7
  115. package/lib/locale/az.mjs.map +1 -1
  116. package/lib/locale/bg.mjs +7 -7
  117. package/lib/locale/bg.mjs.map +1 -1
  118. package/lib/locale/ca.mjs +25 -25
  119. package/lib/locale/ca.mjs.map +1 -1
  120. package/lib/locale/ckb.mjs +29 -29
  121. package/lib/locale/ckb.mjs.map +1 -1
  122. package/lib/locale/cs.mjs +13 -13
  123. package/lib/locale/cs.mjs.map +1 -1
  124. package/lib/locale/da.mjs +22 -22
  125. package/lib/locale/da.mjs.map +1 -1
  126. package/lib/locale/el.mjs +41 -41
  127. package/lib/locale/el.mjs.map +1 -1
  128. package/lib/locale/es.mjs +26 -26
  129. package/lib/locale/es.mjs.map +1 -1
  130. package/lib/locale/et.mjs +29 -29
  131. package/lib/locale/et.mjs.map +1 -1
  132. package/lib/locale/fa.mjs +5 -5
  133. package/lib/locale/fa.mjs.map +1 -1
  134. package/lib/locale/fi.mjs +22 -22
  135. package/lib/locale/fi.mjs.map +1 -1
  136. package/lib/locale/fr.mjs +6 -6
  137. package/lib/locale/fr.mjs.map +1 -1
  138. package/lib/locale/he.mjs +29 -29
  139. package/lib/locale/he.mjs.map +1 -1
  140. package/lib/locale/hr.mjs +28 -28
  141. package/lib/locale/hr.mjs.map +1 -1
  142. package/lib/locale/hu.mjs +10 -10
  143. package/lib/locale/hu.mjs.map +1 -1
  144. package/lib/locale/id.mjs +30 -30
  145. package/lib/locale/id.mjs.map +1 -1
  146. package/lib/locale/it.mjs +7 -7
  147. package/lib/locale/it.mjs.map +1 -1
  148. package/lib/locale/ja.mjs +9 -9
  149. package/lib/locale/ja.mjs.map +1 -1
  150. package/lib/locale/km.mjs +6 -6
  151. package/lib/locale/km.mjs.map +1 -1
  152. package/lib/locale/ko.mjs +27 -27
  153. package/lib/locale/ko.mjs.map +1 -1
  154. package/lib/locale/lt.mjs +5 -5
  155. package/lib/locale/lt.mjs.map +1 -1
  156. package/lib/locale/lv.mjs +33 -33
  157. package/lib/locale/lv.mjs.map +1 -1
  158. package/lib/locale/nl.mjs +10 -10
  159. package/lib/locale/nl.mjs.map +1 -1
  160. package/lib/locale/no.mjs +11 -11
  161. package/lib/locale/no.mjs.map +1 -1
  162. package/lib/locale/pl.mjs +7 -7
  163. package/lib/locale/pl.mjs.map +1 -1
  164. package/lib/locale/pt.mjs +11 -11
  165. package/lib/locale/pt.mjs.map +1 -1
  166. package/lib/locale/ro.mjs +9 -9
  167. package/lib/locale/ro.mjs.map +1 -1
  168. package/lib/locale/ru.mjs +6 -6
  169. package/lib/locale/ru.mjs.map +1 -1
  170. package/lib/locale/sk.mjs +5 -5
  171. package/lib/locale/sk.mjs.map +1 -1
  172. package/lib/locale/sl.mjs +4 -4
  173. package/lib/locale/sl.mjs.map +1 -1
  174. package/lib/locale/sr-Cyrl.mjs +30 -30
  175. package/lib/locale/sr-Cyrl.mjs.map +1 -1
  176. package/lib/locale/sr-Latn.mjs +28 -28
  177. package/lib/locale/sr-Latn.mjs.map +1 -1
  178. package/lib/locale/sv.mjs +17 -17
  179. package/lib/locale/sv.mjs.map +1 -1
  180. package/lib/locale/th.mjs +30 -30
  181. package/lib/locale/th.mjs.map +1 -1
  182. package/lib/locale/tr.mjs +31 -31
  183. package/lib/locale/tr.mjs.map +1 -1
  184. package/lib/locale/uk.mjs +29 -29
  185. package/lib/locale/uk.mjs.map +1 -1
  186. package/lib/locale/vi.mjs +28 -28
  187. package/lib/locale/vi.mjs.map +1 -1
  188. package/lib/locale/zh-Hans.mjs +31 -31
  189. package/lib/locale/zh-Hans.mjs.map +1 -1
  190. package/lib/locale/zh-Hant.mjs +31 -31
  191. package/lib/locale/zh-Hant.mjs.map +1 -1
  192. package/lib/util/animation.mjs +8 -8
  193. package/lib/util/animation.mjs.map +1 -1
  194. package/lib/util/helpers.mjs +6 -4
  195. package/lib/util/helpers.mjs.map +1 -1
  196. package/package.json +7 -2
  197. package/lib/labs/VTimePicker/SelectingTimes.mjs +0 -10
  198. package/lib/labs/VTimePicker/SelectingTimes.mjs.map +0 -1
@@ -12,10 +12,10 @@ export function useStack(isActive, zIndex, disableGlobalStack) {
12
12
  activeChildren: new Set()
13
13
  });
14
14
  provide(StackSymbol, stack);
15
- const _zIndex = shallowRef(+zIndex.value);
15
+ const _zIndex = shallowRef(Number(zIndex.value));
16
16
  useToggleScope(isActive, () => {
17
17
  const lastZIndex = globalStack.at(-1)?.[1];
18
- _zIndex.value = lastZIndex ? lastZIndex + 10 : +zIndex.value;
18
+ _zIndex.value = lastZIndex ? lastZIndex + 10 : Number(zIndex.value);
19
19
  if (createStackEntry) {
20
20
  globalStack.push([vm.uid, _zIndex.value]);
21
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stack.mjs","names":["useToggleScope","computed","inject","onScopeDispose","provide","reactive","readonly","shallowRef","toRaw","watchEffect","getCurrentInstance","StackSymbol","Symbol","for","globalStack","useStack","isActive","zIndex","disableGlobalStack","vm","createStackEntry","parent","undefined","stack","activeChildren","Set","_zIndex","value","lastZIndex","at","push","uid","add","idx","findIndex","v","splice","delete","globalTop","_isTop","setTimeout","localTop","size","stackStyles"],"sources":["../../src/composables/stack.ts"],"sourcesContent":["// Composables\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, inject, onScopeDispose, provide, reactive, readonly, shallowRef, toRaw, watchEffect } from 'vue'\nimport { getCurrentInstance } from '@/util'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\n\nconst StackSymbol: InjectionKey<StackProvide> = Symbol.for('vuetify:stack')\n\ninterface StackProvide {\n activeChildren: Set<number>\n}\n\nconst globalStack = reactive<[uid: number, zIndex: number][]>([])\n\nexport function useStack (\n isActive: Readonly<Ref<boolean>>,\n zIndex: Readonly<Ref<string | number>>,\n disableGlobalStack: boolean\n) {\n const vm = getCurrentInstance('useStack')\n const createStackEntry = !disableGlobalStack\n\n const parent = inject(StackSymbol, undefined)\n const stack: StackProvide = reactive({\n activeChildren: new Set<number>(),\n })\n provide(StackSymbol, stack)\n\n const _zIndex = shallowRef(+zIndex.value)\n useToggleScope(isActive, () => {\n const lastZIndex = globalStack.at(-1)?.[1]\n _zIndex.value = lastZIndex ? lastZIndex + 10 : +zIndex.value\n\n if (createStackEntry) {\n globalStack.push([vm.uid, _zIndex.value])\n }\n\n parent?.activeChildren.add(vm.uid)\n\n onScopeDispose(() => {\n if (createStackEntry) {\n const idx = toRaw(globalStack).findIndex(v => v[0] === vm.uid)\n globalStack.splice(idx, 1)\n }\n\n parent?.activeChildren.delete(vm.uid)\n })\n })\n\n const globalTop = shallowRef(true)\n if (createStackEntry) {\n watchEffect(() => {\n const _isTop = globalStack.at(-1)?.[0] === vm.uid\n setTimeout(() => globalTop.value = _isTop)\n })\n }\n\n const localTop = computed(() => !stack.activeChildren.size)\n\n return {\n globalTop: readonly(globalTop),\n localTop,\n stackStyles: computed(() => ({ zIndex: _zIndex.value })),\n }\n}\n"],"mappings":"AAAA;AAAA,SACSA,cAAc,6BAEvB;AACA,SAASC,QAAQ,EAAEC,MAAM,EAAEC,cAAc,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,KAAK,EAAEC,WAAW,QAAQ,KAAK;AAAA,SAC1GC,kBAAkB,6BAE3B;AAGA,MAAMC,WAAuC,GAAGC,MAAM,CAACC,GAAG,CAAC,eAAe,CAAC;AAM3E,MAAMC,WAAW,GAAGT,QAAQ,CAAkC,EAAE,CAAC;AAEjE,OAAO,SAASU,QAAQA,CACtBC,QAAgC,EAChCC,MAAsC,EACtCC,kBAA2B,EAC3B;EACA,MAAMC,EAAE,GAAGT,kBAAkB,CAAC,UAAU,CAAC;EACzC,MAAMU,gBAAgB,GAAG,CAACF,kBAAkB;EAE5C,MAAMG,MAAM,GAAGnB,MAAM,CAACS,WAAW,EAAEW,SAAS,CAAC;EAC7C,MAAMC,KAAmB,GAAGlB,QAAQ,CAAC;IACnCmB,cAAc,EAAE,IAAIC,GAAG,CAAS;EAClC,CAAC,CAAC;EACFrB,OAAO,CAACO,WAAW,EAAEY,KAAK,CAAC;EAE3B,MAAMG,OAAO,GAAGnB,UAAU,CAAC,CAACU,MAAM,CAACU,KAAK,CAAC;EACzC3B,cAAc,CAACgB,QAAQ,EAAE,MAAM;IAC7B,MAAMY,UAAU,GAAGd,WAAW,CAACe,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1CH,OAAO,CAACC,KAAK,GAAGC,UAAU,GAAGA,UAAU,GAAG,EAAE,GAAG,CAACX,MAAM,CAACU,KAAK;IAE5D,IAAIP,gBAAgB,EAAE;MACpBN,WAAW,CAACgB,IAAI,CAAC,CAACX,EAAE,CAACY,GAAG,EAAEL,OAAO,CAACC,KAAK,CAAC,CAAC;IAC3C;IAEAN,MAAM,EAAEG,cAAc,CAACQ,GAAG,CAACb,EAAE,CAACY,GAAG,CAAC;IAElC5B,cAAc,CAAC,MAAM;MACnB,IAAIiB,gBAAgB,EAAE;QACpB,MAAMa,GAAG,GAAGzB,KAAK,CAACM,WAAW,CAAC,CAACoB,SAAS,CAACC,CAAC,IAAIA,CAAC,CAAC,CAAC,CAAC,KAAKhB,EAAE,CAACY,GAAG,CAAC;QAC9DjB,WAAW,CAACsB,MAAM,CAACH,GAAG,EAAE,CAAC,CAAC;MAC5B;MAEAZ,MAAM,EAAEG,cAAc,CAACa,MAAM,CAAClB,EAAE,CAACY,GAAG,CAAC;IACvC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,MAAMO,SAAS,GAAG/B,UAAU,CAAC,IAAI,CAAC;EAClC,IAAIa,gBAAgB,EAAE;IACpBX,WAAW,CAAC,MAAM;MAChB,MAAM8B,MAAM,GAAGzB,WAAW,CAACe,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAKV,EAAE,CAACY,GAAG;MACjDS,UAAU,CAAC,MAAMF,SAAS,CAACX,KAAK,GAAGY,MAAM,CAAC;IAC5C,CAAC,CAAC;EACJ;EAEA,MAAME,QAAQ,GAAGxC,QAAQ,CAAC,MAAM,CAACsB,KAAK,CAACC,cAAc,CAACkB,IAAI,CAAC;EAE3D,OAAO;IACLJ,SAAS,EAAEhC,QAAQ,CAACgC,SAAS,CAAC;IAC9BG,QAAQ;IACRE,WAAW,EAAE1C,QAAQ,CAAC,OAAO;MAAEgB,MAAM,EAAES,OAAO,CAACC;IAAM,CAAC,CAAC;EACzD,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"file":"stack.mjs","names":["useToggleScope","computed","inject","onScopeDispose","provide","reactive","readonly","shallowRef","toRaw","watchEffect","getCurrentInstance","StackSymbol","Symbol","for","globalStack","useStack","isActive","zIndex","disableGlobalStack","vm","createStackEntry","parent","undefined","stack","activeChildren","Set","_zIndex","Number","value","lastZIndex","at","push","uid","add","idx","findIndex","v","splice","delete","globalTop","_isTop","setTimeout","localTop","size","stackStyles"],"sources":["../../src/composables/stack.ts"],"sourcesContent":["// Composables\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, inject, onScopeDispose, provide, reactive, readonly, shallowRef, toRaw, watchEffect } from 'vue'\nimport { getCurrentInstance } from '@/util'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\n\nconst StackSymbol: InjectionKey<StackProvide> = Symbol.for('vuetify:stack')\n\ninterface StackProvide {\n activeChildren: Set<number>\n}\n\nconst globalStack = reactive<[uid: number, zIndex: number][]>([])\n\nexport function useStack (\n isActive: Readonly<Ref<boolean>>,\n zIndex: Readonly<Ref<string | number>>,\n disableGlobalStack: boolean\n) {\n const vm = getCurrentInstance('useStack')\n const createStackEntry = !disableGlobalStack\n\n const parent = inject(StackSymbol, undefined)\n const stack: StackProvide = reactive({\n activeChildren: new Set<number>(),\n })\n provide(StackSymbol, stack)\n\n const _zIndex = shallowRef(Number(zIndex.value))\n useToggleScope(isActive, () => {\n const lastZIndex = globalStack.at(-1)?.[1]\n _zIndex.value = lastZIndex ? lastZIndex + 10 : Number(zIndex.value)\n\n if (createStackEntry) {\n globalStack.push([vm.uid, _zIndex.value])\n }\n\n parent?.activeChildren.add(vm.uid)\n\n onScopeDispose(() => {\n if (createStackEntry) {\n const idx = toRaw(globalStack).findIndex(v => v[0] === vm.uid)\n globalStack.splice(idx, 1)\n }\n\n parent?.activeChildren.delete(vm.uid)\n })\n })\n\n const globalTop = shallowRef(true)\n if (createStackEntry) {\n watchEffect(() => {\n const _isTop = globalStack.at(-1)?.[0] === vm.uid\n setTimeout(() => globalTop.value = _isTop)\n })\n }\n\n const localTop = computed(() => !stack.activeChildren.size)\n\n return {\n globalTop: readonly(globalTop),\n localTop,\n stackStyles: computed(() => ({ zIndex: _zIndex.value })),\n }\n}\n"],"mappings":"AAAA;AAAA,SACSA,cAAc,6BAEvB;AACA,SAASC,QAAQ,EAAEC,MAAM,EAAEC,cAAc,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,KAAK,EAAEC,WAAW,QAAQ,KAAK;AAAA,SAC1GC,kBAAkB,6BAE3B;AAGA,MAAMC,WAAuC,GAAGC,MAAM,CAACC,GAAG,CAAC,eAAe,CAAC;AAM3E,MAAMC,WAAW,GAAGT,QAAQ,CAAkC,EAAE,CAAC;AAEjE,OAAO,SAASU,QAAQA,CACtBC,QAAgC,EAChCC,MAAsC,EACtCC,kBAA2B,EAC3B;EACA,MAAMC,EAAE,GAAGT,kBAAkB,CAAC,UAAU,CAAC;EACzC,MAAMU,gBAAgB,GAAG,CAACF,kBAAkB;EAE5C,MAAMG,MAAM,GAAGnB,MAAM,CAACS,WAAW,EAAEW,SAAS,CAAC;EAC7C,MAAMC,KAAmB,GAAGlB,QAAQ,CAAC;IACnCmB,cAAc,EAAE,IAAIC,GAAG,CAAS;EAClC,CAAC,CAAC;EACFrB,OAAO,CAACO,WAAW,EAAEY,KAAK,CAAC;EAE3B,MAAMG,OAAO,GAAGnB,UAAU,CAACoB,MAAM,CAACV,MAAM,CAACW,KAAK,CAAC,CAAC;EAChD5B,cAAc,CAACgB,QAAQ,EAAE,MAAM;IAC7B,MAAMa,UAAU,GAAGf,WAAW,CAACgB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1CJ,OAAO,CAACE,KAAK,GAAGC,UAAU,GAAGA,UAAU,GAAG,EAAE,GAAGF,MAAM,CAACV,MAAM,CAACW,KAAK,CAAC;IAEnE,IAAIR,gBAAgB,EAAE;MACpBN,WAAW,CAACiB,IAAI,CAAC,CAACZ,EAAE,CAACa,GAAG,EAAEN,OAAO,CAACE,KAAK,CAAC,CAAC;IAC3C;IAEAP,MAAM,EAAEG,cAAc,CAACS,GAAG,CAACd,EAAE,CAACa,GAAG,CAAC;IAElC7B,cAAc,CAAC,MAAM;MACnB,IAAIiB,gBAAgB,EAAE;QACpB,MAAMc,GAAG,GAAG1B,KAAK,CAACM,WAAW,CAAC,CAACqB,SAAS,CAACC,CAAC,IAAIA,CAAC,CAAC,CAAC,CAAC,KAAKjB,EAAE,CAACa,GAAG,CAAC;QAC9DlB,WAAW,CAACuB,MAAM,CAACH,GAAG,EAAE,CAAC,CAAC;MAC5B;MAEAb,MAAM,EAAEG,cAAc,CAACc,MAAM,CAACnB,EAAE,CAACa,GAAG,CAAC;IACvC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,MAAMO,SAAS,GAAGhC,UAAU,CAAC,IAAI,CAAC;EAClC,IAAIa,gBAAgB,EAAE;IACpBX,WAAW,CAAC,MAAM;MAChB,MAAM+B,MAAM,GAAG1B,WAAW,CAACgB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAKX,EAAE,CAACa,GAAG;MACjDS,UAAU,CAAC,MAAMF,SAAS,CAACX,KAAK,GAAGY,MAAM,CAAC;IAC5C,CAAC,CAAC;EACJ;EAEA,MAAME,QAAQ,GAAGzC,QAAQ,CAAC,MAAM,CAACsB,KAAK,CAACC,cAAc,CAACmB,IAAI,CAAC;EAE3D,OAAO;IACLJ,SAAS,EAAEjC,QAAQ,CAACiC,SAAS,CAAC;IAC9BG,QAAQ;IACRE,WAAW,EAAE3C,QAAQ,CAAC,OAAO;MAAEgB,MAAM,EAAES,OAAO,CAACE;IAAM,CAAC,CAAC;EACzD,CAAC;AACH","ignoreList":[]}
@@ -44,7 +44,7 @@ export function useValidation(props) {
44
44
  const isPristine = shallowRef(true);
45
45
  const isDirty = computed(() => !!(wrapInArray(model.value === '' ? null : model.value).length || wrapInArray(validationModel.value === '' ? null : validationModel.value).length));
46
46
  const errorMessages = computed(() => {
47
- return props.errorMessages?.length ? wrapInArray(props.errorMessages).concat(internalErrorMessages.value).slice(0, Math.max(0, +props.maxErrors)) : internalErrorMessages.value;
47
+ return props.errorMessages?.length ? wrapInArray(props.errorMessages).concat(internalErrorMessages.value).slice(0, Math.max(0, Number(props.maxErrors))) : internalErrorMessages.value;
48
48
  });
49
49
  const validateOn = computed(() => {
50
50
  let value = (props.validateOn ?? form.validateOn?.value) || 'input';
@@ -135,7 +135,7 @@ export function useValidation(props) {
135
135
  const results = [];
136
136
  isValidating.value = true;
137
137
  for (const rule of props.rules) {
138
- if (results.length >= +(props.maxErrors ?? 1)) {
138
+ if (results.length >= Number(props.maxErrors ?? 1)) {
139
139
  break;
140
140
  }
141
141
  const handler = typeof rule === 'function' ? rule : () => rule;
@@ -1 +1 @@
1
- {"version":3,"file":"validation.mjs","names":["makeFocusProps","useForm","useProxiedModel","useToggleScope","computed","nextTick","onBeforeMount","onBeforeUnmount","onMounted","ref","shallowRef","unref","watch","getCurrentInstance","getCurrentInstanceName","getUid","propsFactory","wrapInArray","makeValidationProps","disabled","type","Boolean","default","error","errorMessages","Array","String","maxErrors","Number","name","label","readonly","rules","modelValue","validateOn","validationValue","useValidation","props","arguments","length","undefined","id","model","validationModel","value","form","internalErrorMessages","isPristine","isDirty","concat","slice","Math","max","set","Set","split","input","has","blur","invalidInput","lazy","eager","isValid","isValidating","validationClasses","isDisabled","isReadonly","vm","uid","register","validate","reset","resetValidation","unregister","update","focused","unwatch","val","silent","results","rule","handler","result","console","warn","push"],"sources":["../../src/composables/validation.ts"],"sourcesContent":["// Composables\nimport { makeFocusProps } from '@/composables/focus'\nimport { useForm } from '@/composables/form'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, nextTick, onBeforeMount, onBeforeUnmount, onMounted, ref, shallowRef, unref, watch } from 'vue'\nimport { getCurrentInstance, getCurrentInstanceName, getUid, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { EventProp, MaybeRef } from '@/util'\n\nexport type ValidationResult = string | boolean\nexport type ValidationRule =\n | ValidationResult\n | PromiseLike<ValidationResult>\n | ((value: any) => ValidationResult)\n | ((value: any) => PromiseLike<ValidationResult>)\n\ntype ValidateOnValue = 'blur' | 'input' | 'submit' | 'invalid-input'\ntype ValidateOn =\n | ValidateOnValue\n | `${ValidateOnValue} lazy`\n | `${ValidateOnValue} eager`\n | `lazy ${ValidateOnValue}`\n | `eager ${ValidateOnValue}`\n | 'lazy'\n | 'eager'\n\nexport interface ValidationProps {\n disabled: boolean | null\n error: boolean\n errorMessages: string | readonly string[] | null\n focused: boolean\n maxErrors: string | number\n name: string | undefined\n label: string | undefined\n readonly: boolean | null\n rules: readonly ValidationRule[]\n modelValue: any\n 'onUpdate:modelValue': EventProp | undefined\n validateOn?: ValidateOn\n validationValue: any\n}\n\nexport const makeValidationProps = propsFactory({\n disabled: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n error: Boolean,\n errorMessages: {\n type: [Array, String] as PropType<string | readonly string[] | null>,\n default: () => ([]),\n },\n maxErrors: {\n type: [Number, String],\n default: 1,\n },\n name: String,\n label: String,\n readonly: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n rules: {\n type: Array as PropType<readonly ValidationRule[]>,\n default: () => ([]),\n },\n modelValue: null,\n validateOn: String as PropType<ValidationProps['validateOn']>,\n validationValue: null,\n\n ...makeFocusProps(),\n}, 'validation')\n\nexport function useValidation (\n props: ValidationProps,\n name = getCurrentInstanceName(),\n id: MaybeRef<string | number> = getUid(),\n) {\n const model = useProxiedModel(props, 'modelValue')\n const validationModel = computed(() => props.validationValue === undefined ? model.value : props.validationValue)\n const form = useForm(props)\n const internalErrorMessages = ref<string[]>([])\n const isPristine = shallowRef(true)\n const isDirty = computed(() => !!(\n wrapInArray(model.value === '' ? null : model.value).length ||\n wrapInArray(validationModel.value === '' ? null : validationModel.value).length\n ))\n const errorMessages = computed(() => {\n return props.errorMessages?.length\n ? wrapInArray(props.errorMessages).concat(internalErrorMessages.value).slice(0, Math.max(0, +props.maxErrors))\n : internalErrorMessages.value\n })\n const validateOn = computed(() => {\n let value = (props.validateOn ?? form.validateOn?.value) || 'input'\n if (value === 'lazy') value = 'input lazy'\n if (value === 'eager') value = 'input eager'\n const set = new Set(value?.split(' ') ?? [])\n\n return {\n input: set.has('input'),\n blur: set.has('blur') || set.has('input') || set.has('invalid-input'),\n invalidInput: set.has('invalid-input'),\n lazy: set.has('lazy'),\n eager: set.has('eager'),\n }\n })\n const isValid = computed(() => {\n if (props.error || props.errorMessages?.length) return false\n if (!props.rules.length) return true\n if (isPristine.value) {\n return internalErrorMessages.value.length || validateOn.value.lazy ? null : true\n } else {\n return !internalErrorMessages.value.length\n }\n })\n const isValidating = shallowRef(false)\n const validationClasses = computed(() => {\n return {\n [`${name}--error`]: isValid.value === false,\n [`${name}--dirty`]: isDirty.value,\n [`${name}--disabled`]: form.isDisabled.value,\n [`${name}--readonly`]: form.isReadonly.value,\n }\n })\n\n const vm = getCurrentInstance('validation')\n const uid = computed(() => props.name ?? unref(id))\n\n onBeforeMount(() => {\n form.register?.({\n id: uid.value,\n vm,\n validate,\n reset,\n resetValidation,\n })\n })\n\n onBeforeUnmount(() => {\n form.unregister?.(uid.value)\n })\n\n onMounted(async () => {\n if (!validateOn.value.lazy) {\n await validate(!validateOn.value.eager)\n }\n form.update?.(uid.value, isValid.value, errorMessages.value)\n })\n\n useToggleScope(() => validateOn.value.input || (validateOn.value.invalidInput && isValid.value === false), () => {\n watch(validationModel, () => {\n if (validationModel.value != null) {\n validate()\n } else if (props.focused) {\n const unwatch = watch(() => props.focused, val => {\n if (!val) validate()\n\n unwatch()\n })\n }\n })\n })\n\n useToggleScope(() => validateOn.value.blur, () => {\n watch(() => props.focused, val => {\n if (!val) validate()\n })\n })\n\n watch([isValid, errorMessages], () => {\n form.update?.(uid.value, isValid.value, errorMessages.value)\n })\n\n async function reset () {\n model.value = null\n await nextTick()\n await resetValidation()\n }\n\n async function resetValidation () {\n isPristine.value = true\n if (!validateOn.value.lazy) {\n await validate(!validateOn.value.eager)\n } else {\n internalErrorMessages.value = []\n }\n }\n\n async function validate (silent = false) {\n const results = []\n\n isValidating.value = true\n\n for (const rule of props.rules) {\n if (results.length >= +(props.maxErrors ?? 1)) {\n break\n }\n\n const handler = typeof rule === 'function' ? rule : () => rule\n const result = await handler(validationModel.value)\n\n if (result === true) continue\n\n if (result !== false && typeof result !== 'string') {\n // eslint-disable-next-line no-console\n console.warn(`${result} is not a valid value. Rule functions must return boolean true or a string.`)\n\n continue\n }\n\n results.push(result || '')\n }\n\n internalErrorMessages.value = results\n isValidating.value = false\n isPristine.value = silent\n\n return internalErrorMessages.value\n }\n\n return {\n errorMessages,\n isDirty,\n isDisabled: form.isDisabled,\n isReadonly: form.isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"validation.mjs","names":["makeFocusProps","useForm","useProxiedModel","useToggleScope","computed","nextTick","onBeforeMount","onBeforeUnmount","onMounted","ref","shallowRef","unref","watch","getCurrentInstance","getCurrentInstanceName","getUid","propsFactory","wrapInArray","makeValidationProps","disabled","type","Boolean","default","error","errorMessages","Array","String","maxErrors","Number","name","label","readonly","rules","modelValue","validateOn","validationValue","useValidation","props","arguments","length","undefined","id","model","validationModel","value","form","internalErrorMessages","isPristine","isDirty","concat","slice","Math","max","set","Set","split","input","has","blur","invalidInput","lazy","eager","isValid","isValidating","validationClasses","isDisabled","isReadonly","vm","uid","register","validate","reset","resetValidation","unregister","update","focused","unwatch","val","silent","results","rule","handler","result","console","warn","push"],"sources":["../../src/composables/validation.ts"],"sourcesContent":["// Composables\nimport { makeFocusProps } from '@/composables/focus'\nimport { useForm } from '@/composables/form'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, nextTick, onBeforeMount, onBeforeUnmount, onMounted, ref, shallowRef, unref, watch } from 'vue'\nimport { getCurrentInstance, getCurrentInstanceName, getUid, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { EventProp, MaybeRef } from '@/util'\n\nexport type ValidationResult = string | boolean\nexport type ValidationRule =\n | ValidationResult\n | PromiseLike<ValidationResult>\n | ((value: any) => ValidationResult)\n | ((value: any) => PromiseLike<ValidationResult>)\n\ntype ValidateOnValue = 'blur' | 'input' | 'submit' | 'invalid-input'\ntype ValidateOn =\n | ValidateOnValue\n | `${ValidateOnValue} lazy`\n | `${ValidateOnValue} eager`\n | `lazy ${ValidateOnValue}`\n | `eager ${ValidateOnValue}`\n | 'lazy'\n | 'eager'\n\nexport interface ValidationProps {\n disabled: boolean | null\n error: boolean\n errorMessages: string | readonly string[] | null\n focused: boolean\n maxErrors: string | number\n name: string | undefined\n label: string | undefined\n readonly: boolean | null\n rules: readonly ValidationRule[]\n modelValue: any\n 'onUpdate:modelValue': EventProp | undefined\n validateOn?: ValidateOn\n validationValue: any\n}\n\nexport const makeValidationProps = propsFactory({\n disabled: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n error: Boolean,\n errorMessages: {\n type: [Array, String] as PropType<string | readonly string[] | null>,\n default: () => ([]),\n },\n maxErrors: {\n type: [Number, String],\n default: 1,\n },\n name: String,\n label: String,\n readonly: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n rules: {\n type: Array as PropType<readonly ValidationRule[]>,\n default: () => ([]),\n },\n modelValue: null,\n validateOn: String as PropType<ValidationProps['validateOn']>,\n validationValue: null,\n\n ...makeFocusProps(),\n}, 'validation')\n\nexport function useValidation (\n props: ValidationProps,\n name = getCurrentInstanceName(),\n id: MaybeRef<string | number> = getUid(),\n) {\n const model = useProxiedModel(props, 'modelValue')\n const validationModel = computed(() => props.validationValue === undefined ? model.value : props.validationValue)\n const form = useForm(props)\n const internalErrorMessages = ref<string[]>([])\n const isPristine = shallowRef(true)\n const isDirty = computed(() => !!(\n wrapInArray(model.value === '' ? null : model.value).length ||\n wrapInArray(validationModel.value === '' ? null : validationModel.value).length\n ))\n const errorMessages = computed(() => {\n return props.errorMessages?.length\n ? wrapInArray(props.errorMessages).concat(internalErrorMessages.value).slice(0, Math.max(0, Number(props.maxErrors)))\n : internalErrorMessages.value\n })\n const validateOn = computed(() => {\n let value = (props.validateOn ?? form.validateOn?.value) || 'input'\n if (value === 'lazy') value = 'input lazy'\n if (value === 'eager') value = 'input eager'\n const set = new Set(value?.split(' ') ?? [])\n\n return {\n input: set.has('input'),\n blur: set.has('blur') || set.has('input') || set.has('invalid-input'),\n invalidInput: set.has('invalid-input'),\n lazy: set.has('lazy'),\n eager: set.has('eager'),\n }\n })\n const isValid = computed(() => {\n if (props.error || props.errorMessages?.length) return false\n if (!props.rules.length) return true\n if (isPristine.value) {\n return internalErrorMessages.value.length || validateOn.value.lazy ? null : true\n } else {\n return !internalErrorMessages.value.length\n }\n })\n const isValidating = shallowRef(false)\n const validationClasses = computed(() => {\n return {\n [`${name}--error`]: isValid.value === false,\n [`${name}--dirty`]: isDirty.value,\n [`${name}--disabled`]: form.isDisabled.value,\n [`${name}--readonly`]: form.isReadonly.value,\n }\n })\n\n const vm = getCurrentInstance('validation')\n const uid = computed(() => props.name ?? unref(id))\n\n onBeforeMount(() => {\n form.register?.({\n id: uid.value,\n vm,\n validate,\n reset,\n resetValidation,\n })\n })\n\n onBeforeUnmount(() => {\n form.unregister?.(uid.value)\n })\n\n onMounted(async () => {\n if (!validateOn.value.lazy) {\n await validate(!validateOn.value.eager)\n }\n form.update?.(uid.value, isValid.value, errorMessages.value)\n })\n\n useToggleScope(() => validateOn.value.input || (validateOn.value.invalidInput && isValid.value === false), () => {\n watch(validationModel, () => {\n if (validationModel.value != null) {\n validate()\n } else if (props.focused) {\n const unwatch = watch(() => props.focused, val => {\n if (!val) validate()\n\n unwatch()\n })\n }\n })\n })\n\n useToggleScope(() => validateOn.value.blur, () => {\n watch(() => props.focused, val => {\n if (!val) validate()\n })\n })\n\n watch([isValid, errorMessages], () => {\n form.update?.(uid.value, isValid.value, errorMessages.value)\n })\n\n async function reset () {\n model.value = null\n await nextTick()\n await resetValidation()\n }\n\n async function resetValidation () {\n isPristine.value = true\n if (!validateOn.value.lazy) {\n await validate(!validateOn.value.eager)\n } else {\n internalErrorMessages.value = []\n }\n }\n\n async function validate (silent = false) {\n const results = []\n\n isValidating.value = true\n\n for (const rule of props.rules) {\n if (results.length >= Number(props.maxErrors ?? 1)) {\n break\n }\n\n const handler = typeof rule === 'function' ? rule : () => rule\n const result = await handler(validationModel.value)\n\n if (result === true) continue\n\n if (result !== false && typeof result !== 'string') {\n // eslint-disable-next-line no-console\n console.warn(`${result} is not a valid value. Rule functions must return boolean true or a string.`)\n\n continue\n }\n\n results.push(result || '')\n }\n\n internalErrorMessages.value = results\n isValidating.value = false\n isPristine.value = silent\n\n return internalErrorMessages.value\n }\n\n return {\n errorMessages,\n isDirty,\n isDisabled: form.isDisabled,\n isReadonly: form.isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses,\n }\n}\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.7.14";
19
+ export const version = "3.7.16";
20
20
  createVuetify.version = version;
21
21
  export { blueprints, components, directives };
22
22
  export * from "./composables/index.mjs";
package/lib/framework.mjs CHANGED
@@ -97,7 +97,7 @@ export function createVuetify() {
97
97
  goTo
98
98
  };
99
99
  }
100
- export const version = "3.7.14";
100
+ export const version = "3.7.16";
101
101
  createVuetify.version = version;
102
102
 
103
103
  // Vue's inject() can only be used in setup
package/lib/index.d.mts CHANGED
@@ -486,42 +486,41 @@ declare module 'vue' {
486
486
  $children?: VNodeChild
487
487
  }
488
488
  export interface GlobalComponents {
489
+ VAlert: typeof import('vuetify/components')['VAlert']
490
+ VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
489
491
  VAppBar: typeof import('vuetify/components')['VAppBar']
490
492
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
491
493
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
492
- VAlert: typeof import('vuetify/components')['VAlert']
493
- VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
494
- VApp: typeof import('vuetify/components')['VApp']
495
494
  VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
496
495
  VBadge: typeof import('vuetify/components')['VBadge']
497
496
  VAvatar: typeof import('vuetify/components')['VAvatar']
498
- VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
499
- VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
500
- VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
501
497
  VBanner: typeof import('vuetify/components')['VBanner']
502
498
  VBannerActions: typeof import('vuetify/components')['VBannerActions']
503
499
  VBannerText: typeof import('vuetify/components')['VBannerText']
504
- VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
500
+ VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
501
+ VBtn: typeof import('vuetify/components')['VBtn']
502
+ VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
505
503
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
506
504
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
507
505
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
508
- VBtn: typeof import('vuetify/components')['VBtn']
506
+ VCarousel: typeof import('vuetify/components')['VCarousel']
507
+ VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
508
+ VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
509
509
  VCard: typeof import('vuetify/components')['VCard']
510
510
  VCardActions: typeof import('vuetify/components')['VCardActions']
511
511
  VCardItem: typeof import('vuetify/components')['VCardItem']
512
512
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
513
513
  VCardText: typeof import('vuetify/components')['VCardText']
514
514
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
515
- VCarousel: typeof import('vuetify/components')['VCarousel']
516
- VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
517
515
  VChip: typeof import('vuetify/components')['VChip']
518
- VCode: typeof import('vuetify/components')['VCode']
516
+ VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
519
517
  VCheckbox: typeof import('vuetify/components')['VCheckbox']
520
518
  VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
521
- VCombobox: typeof import('vuetify/components')['VCombobox']
522
- VCounter: typeof import('vuetify/components')['VCounter']
523
519
  VChipGroup: typeof import('vuetify/components')['VChipGroup']
520
+ VApp: typeof import('vuetify/components')['VApp']
524
521
  VColorPicker: typeof import('vuetify/components')['VColorPicker']
522
+ VCode: typeof import('vuetify/components')['VCode']
523
+ VCombobox: typeof import('vuetify/components')['VCombobox']
525
524
  VDatePicker: typeof import('vuetify/components')['VDatePicker']
526
525
  VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
527
526
  VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
@@ -535,28 +534,32 @@ declare module 'vue' {
535
534
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
536
535
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
537
536
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
538
- VDivider: typeof import('vuetify/components')['VDivider']
539
537
  VDialog: typeof import('vuetify/components')['VDialog']
538
+ VDivider: typeof import('vuetify/components')['VDivider']
539
+ VCounter: typeof import('vuetify/components')['VCounter']
540
+ VFab: typeof import('vuetify/components')['VFab']
541
+ VEmptyState: typeof import('vuetify/components')['VEmptyState']
542
+ VField: typeof import('vuetify/components')['VField']
543
+ VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
540
544
  VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
541
545
  VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
542
546
  VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
543
547
  VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
544
- VField: typeof import('vuetify/components')['VField']
545
- VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
546
- VEmptyState: typeof import('vuetify/components')['VEmptyState']
547
548
  VFooter: typeof import('vuetify/components')['VFooter']
548
549
  VFileInput: typeof import('vuetify/components')['VFileInput']
549
- VImg: typeof import('vuetify/components')['VImg']
550
- VFab: typeof import('vuetify/components')['VFab']
551
- VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
552
- VItemGroup: typeof import('vuetify/components')['VItemGroup']
553
- VItem: typeof import('vuetify/components')['VItem']
550
+ VInput: typeof import('vuetify/components')['VInput']
554
551
  VIcon: typeof import('vuetify/components')['VIcon']
555
552
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
556
553
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
557
554
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
558
555
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
559
- VInput: typeof import('vuetify/components')['VInput']
556
+ VImg: typeof import('vuetify/components')['VImg']
557
+ VItemGroup: typeof import('vuetify/components')['VItemGroup']
558
+ VItem: typeof import('vuetify/components')['VItem']
559
+ VKbd: typeof import('vuetify/components')['VKbd']
560
+ VMain: typeof import('vuetify/components')['VMain']
561
+ VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
562
+ VLabel: typeof import('vuetify/components')['VLabel']
560
563
  VList: typeof import('vuetify/components')['VList']
561
564
  VListGroup: typeof import('vuetify/components')['VListGroup']
562
565
  VListImg: typeof import('vuetify/components')['VListImg']
@@ -566,35 +569,32 @@ declare module 'vue' {
566
569
  VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
567
570
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
568
571
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
569
- VMain: typeof import('vuetify/components')['VMain']
570
- VLabel: typeof import('vuetify/components')['VLabel']
571
- VKbd: typeof import('vuetify/components')['VKbd']
572
- VPagination: typeof import('vuetify/components')['VPagination']
573
- VOverlay: typeof import('vuetify/components')['VOverlay']
572
+ VMenu: typeof import('vuetify/components')['VMenu']
574
573
  VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
574
+ VOtpInput: typeof import('vuetify/components')['VOtpInput']
575
575
  VMessages: typeof import('vuetify/components')['VMessages']
576
- VMenu: typeof import('vuetify/components')['VMenu']
577
- VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
576
+ VOverlay: typeof import('vuetify/components')['VOverlay']
578
577
  VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
579
- VSelect: typeof import('vuetify/components')['VSelect']
578
+ VPagination: typeof import('vuetify/components')['VPagination']
580
579
  VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
581
- VOtpInput: typeof import('vuetify/components')['VOtpInput']
582
- VRating: typeof import('vuetify/components')['VRating']
583
580
  VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
584
- VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
585
- VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
581
+ VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
582
+ VRating: typeof import('vuetify/components')['VRating']
586
583
  VSheet: typeof import('vuetify/components')['VSheet']
584
+ VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
587
585
  VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
588
- VSnackbar: typeof import('vuetify/components')['VSnackbar']
589
586
  VSlider: typeof import('vuetify/components')['VSlider']
590
- VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
587
+ VSnackbar: typeof import('vuetify/components')['VSnackbar']
588
+ VSelect: typeof import('vuetify/components')['VSelect']
589
+ VSystemBar: typeof import('vuetify/components')['VSystemBar']
590
+ VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
591
+ VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
591
592
  VStepper: typeof import('vuetify/components')['VStepper']
592
593
  VStepperActions: typeof import('vuetify/components')['VStepperActions']
593
594
  VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
594
595
  VStepperItem: typeof import('vuetify/components')['VStepperItem']
595
596
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
596
597
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
597
- VSystemBar: typeof import('vuetify/components')['VSystemBar']
598
598
  VTable: typeof import('vuetify/components')['VTable']
599
599
  VSwitch: typeof import('vuetify/components')['VSwitch']
600
600
  VTextarea: typeof import('vuetify/components')['VTextarea']
@@ -602,37 +602,37 @@ declare module 'vue' {
602
602
  VTabs: typeof import('vuetify/components')['VTabs']
603
603
  VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
604
604
  VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
605
- VTextField: typeof import('vuetify/components')['VTextField']
605
+ VTimeline: typeof import('vuetify/components')['VTimeline']
606
+ VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
607
+ VTooltip: typeof import('vuetify/components')['VTooltip']
606
608
  VToolbar: typeof import('vuetify/components')['VToolbar']
607
609
  VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
608
610
  VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
609
- VTimeline: typeof import('vuetify/components')['VTimeline']
610
- VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
611
611
  VWindow: typeof import('vuetify/components')['VWindow']
612
612
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
613
- VTooltip: typeof import('vuetify/components')['VTooltip']
613
+ VTextField: typeof import('vuetify/components')['VTextField']
614
614
  VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
615
- VDataIterator: typeof import('vuetify/components')['VDataIterator']
616
615
  VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
617
- VForm: typeof import('vuetify/components')['VForm']
618
- VHover: typeof import('vuetify/components')['VHover']
619
- VLayout: typeof import('vuetify/components')['VLayout']
620
- VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
616
+ VDataIterator: typeof import('vuetify/components')['VDataIterator']
621
617
  VContainer: typeof import('vuetify/components')['VContainer']
622
618
  VCol: typeof import('vuetify/components')['VCol']
623
619
  VRow: typeof import('vuetify/components')['VRow']
624
620
  VSpacer: typeof import('vuetify/components')['VSpacer']
621
+ VForm: typeof import('vuetify/components')['VForm']
622
+ VHover: typeof import('vuetify/components')['VHover']
623
+ VLayout: typeof import('vuetify/components')['VLayout']
624
+ VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
625
625
  VLazy: typeof import('vuetify/components')['VLazy']
626
626
  VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
627
- VNoSsr: typeof import('vuetify/components')['VNoSsr']
628
627
  VParallax: typeof import('vuetify/components')['VParallax']
629
628
  VRadio: typeof import('vuetify/components')['VRadio']
629
+ VNoSsr: typeof import('vuetify/components')['VNoSsr']
630
630
  VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
631
631
  VResponsive: typeof import('vuetify/components')['VResponsive']
632
632
  VSparkline: typeof import('vuetify/components')['VSparkline']
633
633
  VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
634
- VValidation: typeof import('vuetify/components')['VValidation']
635
634
  VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
635
+ VValidation: typeof import('vuetify/components')['VValidation']
636
636
  VFabTransition: typeof import('vuetify/components')['VFabTransition']
637
637
  VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
638
638
  VDialogTopTransition: typeof import('vuetify/components')['VDialogTopTransition']
@@ -650,28 +650,28 @@ declare module 'vue' {
650
650
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
651
651
  VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
652
652
  VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
653
- VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
654
- VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
655
653
  VCalendar: typeof import('vuetify/labs/components')['VCalendar']
656
654
  VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
657
655
  VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
658
656
  VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
659
657
  VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
660
658
  VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
661
- VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
662
659
  VPicker: typeof import('vuetify/labs/components')['VPicker']
663
660
  VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
661
+ VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
662
+ VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
663
+ VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
664
664
  VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
665
665
  VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
666
666
  VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
667
- VTreeview: typeof import('vuetify/labs/components')['VTreeview']
668
- VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
669
- VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
670
667
  VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
671
668
  VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
672
669
  VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
670
+ VTreeview: typeof import('vuetify/labs/components')['VTreeview']
671
+ VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
672
+ VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
673
673
  VDateInput: typeof import('vuetify/labs/components')['VDateInput']
674
- VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
675
674
  VSnackbarQueue: typeof import('vuetify/labs/components')['VSnackbarQueue']
675
+ VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
676
676
  }
677
677
  }
@@ -25,8 +25,8 @@ export const makeVDateInputProps = propsFactory({
25
25
  prependIcon: '$calendar'
26
26
  }),
27
27
  ...omit(makeVDatePickerProps({
28
- weeksInMonth: 'dynamic',
29
- hideHeader: true
28
+ hideHeader: true,
29
+ showAdjacentMonths: true
30
30
  }), ['active', 'location', 'rounded'])
31
31
  }, 'VDateInput');
32
32
  export const VDateInput = genericComponent()({
@@ -60,9 +60,9 @@ export const VDateInput = genericComponent()({
60
60
  if (props.multiple === 'range') {
61
61
  const start = value[0];
62
62
  const end = value[value.length - 1];
63
- return adapter.isValid(start) && adapter.isValid(end) ? `${adapter.format(start, 'keyboardDate')} - ${adapter.format(end, 'keyboardDate')}` : '';
63
+ return adapter.isValid(start) && adapter.isValid(end) ? `${adapter.format(adapter.date(start), 'keyboardDate')} - ${adapter.format(adapter.date(end), 'keyboardDate')}` : '';
64
64
  }
65
- return adapter.isValid(model.value) ? adapter.format(model.value, 'keyboardDate') : '';
65
+ return adapter.isValid(model.value) ? adapter.format(adapter.date(model.value), 'keyboardDate') : '';
66
66
  });
67
67
  const isInteractive = computed(() => !props.disabled && !props.readonly);
68
68
  function onKeydown(e) {
@@ -110,6 +110,7 @@ export const VDateInput = genericComponent()({
110
110
  "onUpdate:modelValue": $event => menu.value = $event,
111
111
  "activator": "parent",
112
112
  "min-width": "0",
113
+ "eager": isFocused.value,
113
114
  "location": props.location,
114
115
  "closeOnContentClick": false,
115
116
  "openOnClick": false
@@ -1 +1 @@
1
- {"version":3,"file":"VDateInput.mjs","names":["makeVConfirmEditProps","VConfirmEdit","makeVDatePickerProps","VDatePicker","VMenu","makeVTextFieldProps","VTextField","useDate","makeFocusProps","useFocus","forwardRefs","useLocale","useProxiedModel","computed","ref","shallowRef","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVDateInputProps","hideActions","Boolean","location","type","String","default","placeholder","prependIcon","weeksInMonth","hideHeader","VDateInput","name","props","emits","val","setup","_ref","slots","t","adapter","isFocused","focus","blur","model","multiple","Array","isArray","map","item","toJsDate","date","menu","vDateInputRef","display","value","length","start","end","isValid","format","isInteractive","disabled","readonly","onKeydown","e","key","target","onClick","preventDefault","stopPropagation","onSave","onUpdateModel","confirmEditProps","filterProps","datePickerProps","textFieldProps","_createVNode","_mergeProps","class","style","undefined","_Fragment","$event","onCancel","_ref2","actions","proxyModel","save","cancel","isPristine"],"sources":["../../../src/labs/VDateInput/VDateInput.tsx"],"sourcesContent":["// Components\nimport { makeVConfirmEditProps, VConfirmEdit } from '@/components/VConfirmEdit/VConfirmEdit'\nimport { makeVDatePickerProps, VDatePicker } from '@/components/VDatePicker/VDatePicker'\nimport { VMenu } from '@/components/VMenu/VMenu'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, shallowRef } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { StrategyProps } from '@/components/VOverlay/locationStrategies'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\n// Types\nexport type VDateInputActionsSlot = {\n save: () => void\n cancel: () => void\n isPristine: boolean\n}\n\nexport type VDateInputSlots = Omit<VTextFieldSlots, 'default'> & {\n actions: VDateInputActionsSlot\n default: never\n}\n\nexport const makeVDateInputProps = propsFactory({\n hideActions: Boolean,\n location: {\n type: String as PropType<StrategyProps['location']>,\n default: 'bottom start',\n },\n ...makeFocusProps(),\n ...makeVConfirmEditProps(),\n ...makeVTextFieldProps({\n placeholder: 'mm/dd/yyyy',\n prependIcon: '$calendar',\n }),\n ...omit(makeVDatePickerProps({\n weeksInMonth: 'dynamic' as const,\n hideHeader: true,\n }), ['active', 'location', 'rounded']),\n}, 'VDateInput')\n\nexport const VDateInput = genericComponent<VDateInputSlots>()({\n name: 'VDateInput',\n\n props: makeVDateInputProps(),\n\n emits: {\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const adapter = useDate()\n const { isFocused, focus, blur } = useFocus(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.multiple ? [] : null,\n val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val,\n val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val\n )\n\n const menu = shallowRef(false)\n const vDateInputRef = ref()\n\n const display = computed(() => {\n const value = wrapInArray(model.value)\n\n if (!value.length) return null\n\n if (props.multiple === true) {\n return t('$vuetify.datePicker.itemsSelected', value.length)\n }\n\n if (props.multiple === 'range') {\n const start = value[0]\n const end = value[value.length - 1]\n\n return adapter.isValid(start) && adapter.isValid(end)\n ? `${adapter.format(start, 'keyboardDate')} - ${adapter.format(end, 'keyboardDate')}`\n : ''\n }\n\n return adapter.isValid(model.value) ? adapter.format(model.value, 'keyboardDate') : ''\n })\n\n const isInteractive = computed(() => !props.disabled && !props.readonly)\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key !== 'Enter') return\n\n if (!menu.value || !isFocused.value) {\n menu.value = true\n\n return\n }\n\n const target = e.target as HTMLInputElement\n\n model.value = target.value\n }\n\n function onClick (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n menu.value = true\n }\n\n function onSave () {\n menu.value = false\n }\n\n function onUpdateModel (value: string) {\n if (value != null) return\n\n model.value = null\n }\n\n useRender(() => {\n const confirmEditProps = VConfirmEdit.filterProps(props)\n const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']))\n const textFieldProps = VTextField.filterProps(props)\n\n return (\n <VTextField\n ref={ vDateInputRef }\n { ...textFieldProps }\n class={ props.class }\n style={ props.style }\n modelValue={ display.value }\n onKeydown={ isInteractive.value ? onKeydown : undefined }\n focused={ menu.value || isFocused.value }\n onFocus={ focus }\n onBlur={ blur }\n onClick:control={ isInteractive.value ? onClick : undefined }\n onClick:prepend={ isInteractive.value ? onClick : undefined }\n onUpdate:modelValue={ onUpdateModel }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n v-model={ menu.value }\n activator=\"parent\"\n min-width=\"0\"\n location={ props.location }\n closeOnContentClick={ false }\n openOnClick={ false }\n >\n <VConfirmEdit\n { ...confirmEditProps }\n v-model={ model.value }\n onSave={ onSave }\n onCancel={ () => menu.value = false }\n >\n {{\n default: ({ actions, model: proxyModel, save, cancel, isPristine }) => {\n return (\n <VDatePicker\n { ...datePickerProps }\n modelValue={ props.hideActions ? model.value : proxyModel.value }\n onUpdate:modelValue={ val => {\n if (!props.hideActions) {\n proxyModel.value = val\n } else {\n model.value = val\n\n if (!props.multiple) menu.value = false\n }\n }}\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n >\n {{\n actions: !props.hideActions ? () => slots.actions?.({ save, cancel, isPristine }) ?? actions() : undefined,\n }}\n </VDatePicker>\n )\n },\n }}\n </VConfirmEdit>\n </VMenu>\n\n { slots.default?.() }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vDateInputRef)\n },\n})\n\nexport type VDateInput = InstanceType<typeof VDateInput>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VDateInput.mjs","names":["makeVConfirmEditProps","VConfirmEdit","makeVDatePickerProps","VDatePicker","VMenu","makeVTextFieldProps","VTextField","useDate","makeFocusProps","useFocus","forwardRefs","useLocale","useProxiedModel","computed","ref","shallowRef","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVDateInputProps","hideActions","Boolean","location","type","String","default","placeholder","prependIcon","hideHeader","showAdjacentMonths","VDateInput","name","props","emits","val","setup","_ref","slots","t","adapter","isFocused","focus","blur","model","multiple","Array","isArray","map","item","toJsDate","date","menu","vDateInputRef","display","value","length","start","end","isValid","format","isInteractive","disabled","readonly","onKeydown","e","key","target","onClick","preventDefault","stopPropagation","onSave","onUpdateModel","confirmEditProps","filterProps","datePickerProps","textFieldProps","_createVNode","_mergeProps","class","style","undefined","_Fragment","$event","onCancel","_ref2","actions","proxyModel","save","cancel","isPristine"],"sources":["../../../src/labs/VDateInput/VDateInput.tsx"],"sourcesContent":["// Components\nimport { makeVConfirmEditProps, VConfirmEdit } from '@/components/VConfirmEdit/VConfirmEdit'\nimport { makeVDatePickerProps, VDatePicker } from '@/components/VDatePicker/VDatePicker'\nimport { VMenu } from '@/components/VMenu/VMenu'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, shallowRef } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { StrategyProps } from '@/components/VOverlay/locationStrategies'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\n// Types\nexport type VDateInputActionsSlot = {\n save: () => void\n cancel: () => void\n isPristine: boolean\n}\n\nexport type VDateInputSlots = Omit<VTextFieldSlots, 'default'> & {\n actions: VDateInputActionsSlot\n default: never\n}\n\nexport const makeVDateInputProps = propsFactory({\n hideActions: Boolean,\n location: {\n type: String as PropType<StrategyProps['location']>,\n default: 'bottom start',\n },\n ...makeFocusProps(),\n ...makeVConfirmEditProps(),\n ...makeVTextFieldProps({\n placeholder: 'mm/dd/yyyy',\n prependIcon: '$calendar',\n }),\n ...omit(makeVDatePickerProps({\n hideHeader: true,\n showAdjacentMonths: true,\n }), ['active', 'location', 'rounded']),\n}, 'VDateInput')\n\nexport const VDateInput = genericComponent<VDateInputSlots>()({\n name: 'VDateInput',\n\n props: makeVDateInputProps(),\n\n emits: {\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const adapter = useDate()\n const { isFocused, focus, blur } = useFocus(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.multiple ? [] : null,\n val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val,\n val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val\n )\n\n const menu = shallowRef(false)\n const vDateInputRef = ref()\n\n const display = computed(() => {\n const value = wrapInArray(model.value)\n\n if (!value.length) return null\n\n if (props.multiple === true) {\n return t('$vuetify.datePicker.itemsSelected', value.length)\n }\n\n if (props.multiple === 'range') {\n const start = value[0]\n const end = value[value.length - 1]\n\n return adapter.isValid(start) && adapter.isValid(end)\n ? `${adapter.format(adapter.date(start), 'keyboardDate')} - ${adapter.format(adapter.date(end), 'keyboardDate')}`\n : ''\n }\n\n return adapter.isValid(model.value) ? adapter.format(adapter.date(model.value), 'keyboardDate') : ''\n })\n\n const isInteractive = computed(() => !props.disabled && !props.readonly)\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key !== 'Enter') return\n\n if (!menu.value || !isFocused.value) {\n menu.value = true\n\n return\n }\n\n const target = e.target as HTMLInputElement\n\n model.value = target.value\n }\n\n function onClick (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n menu.value = true\n }\n\n function onSave () {\n menu.value = false\n }\n\n function onUpdateModel (value: string) {\n if (value != null) return\n\n model.value = null\n }\n\n useRender(() => {\n const confirmEditProps = VConfirmEdit.filterProps(props)\n const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']))\n const textFieldProps = VTextField.filterProps(props)\n\n return (\n <VTextField\n ref={ vDateInputRef }\n { ...textFieldProps }\n class={ props.class }\n style={ props.style }\n modelValue={ display.value }\n onKeydown={ isInteractive.value ? onKeydown : undefined }\n focused={ menu.value || isFocused.value }\n onFocus={ focus }\n onBlur={ blur }\n onClick:control={ isInteractive.value ? onClick : undefined }\n onClick:prepend={ isInteractive.value ? onClick : undefined }\n onUpdate:modelValue={ onUpdateModel }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n v-model={ menu.value }\n activator=\"parent\"\n min-width=\"0\"\n eager={ isFocused.value }\n location={ props.location }\n closeOnContentClick={ false }\n openOnClick={ false }\n >\n <VConfirmEdit\n { ...confirmEditProps }\n v-model={ model.value }\n onSave={ onSave }\n onCancel={ () => menu.value = false }\n >\n {{\n default: ({ actions, model: proxyModel, save, cancel, isPristine }) => {\n return (\n <VDatePicker\n { ...datePickerProps }\n modelValue={ props.hideActions ? model.value : proxyModel.value }\n onUpdate:modelValue={ val => {\n if (!props.hideActions) {\n proxyModel.value = val\n } else {\n model.value = val\n\n if (!props.multiple) menu.value = false\n }\n }}\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n >\n {{\n actions: !props.hideActions ? () => slots.actions?.({ save, cancel, isPristine }) ?? actions() : undefined,\n }}\n </VDatePicker>\n )\n },\n }}\n </VConfirmEdit>\n </VMenu>\n\n { slots.default?.() }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vDateInputRef)\n },\n})\n\nexport type VDateInput = InstanceType<typeof VDateInput>\n"],"mappings":";AAAA;AAAA,SACSA,qBAAqB,EAAEC,YAAY;AAAA,SACnCC,oBAAoB,EAAEC,WAAW;AAAA,SACjCC,KAAK;AAAA,SACLC,mBAAmB,EAAEC,UAAU,sDAExC;AAAA,SACSC,OAAO;AAAA,SACPC,cAAc,EAAEC,QAAQ;AAAA,SACxBC,WAAW;AAAA,SACXC,SAAS;AAAA,SACTC,eAAe,8CAExB;AACA,SAASC,QAAQ,EAAEC,GAAG,EAAEC,UAAU,QAAQ,KAAK;AAAA,SACtCC,gBAAgB,EAAEC,IAAI,EAAEC,YAAY,EAAEC,SAAS,EAAEC,WAAW,gCAErE;AAKA;AAYA,OAAO,MAAMC,mBAAmB,GAAGH,YAAY,CAAC;EAC9CI,WAAW,EAAEC,OAAO;EACpBC,QAAQ,EAAE;IACRC,IAAI,EAAEC,MAA6C;IACnDC,OAAO,EAAE;EACX,CAAC;EACD,GAAGnB,cAAc,CAAC,CAAC;EACnB,GAAGR,qBAAqB,CAAC,CAAC;EAC1B,GAAGK,mBAAmB,CAAC;IACrBuB,WAAW,EAAE,YAAY;IACzBC,WAAW,EAAE;EACf,CAAC,CAAC;EACF,GAAGZ,IAAI,CAACf,oBAAoB,CAAC;IAC3B4B,UAAU,EAAE,IAAI;IAChBC,kBAAkB,EAAE;EACtB,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC;AACvC,CAAC,EAAE,YAAY,CAAC;AAEhB,OAAO,MAAMC,UAAU,GAAGhB,gBAAgB,CAAkB,CAAC,CAAC;EAC5DiB,IAAI,EAAE,YAAY;EAElBC,KAAK,EAAEb,mBAAmB,CAAC,CAAC;EAE5Bc,KAAK,EAAE;IACL,mBAAmB,EAAGC,GAAW,IAAK;EACxC,CAAC;EAEDC,KAAKA,CAAEH,KAAK,EAAAI,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAEE;IAAE,CAAC,GAAG7B,SAAS,CAAC,CAAC;IACzB,MAAM8B,OAAO,GAAGlC,OAAO,CAAC,CAAC;IACzB,MAAM;MAAEmC,SAAS;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAGnC,QAAQ,CAACyB,KAAK,CAAC;IAClD,MAAMW,KAAK,GAAGjC,eAAe,CAC3BsB,KAAK,EACL,YAAY,EACZA,KAAK,CAACY,QAAQ,GAAG,EAAE,GAAG,IAAI,EAC1BV,GAAG,IAAIW,KAAK,CAACC,OAAO,CAACZ,GAAG,CAAC,GAAGA,GAAG,CAACa,GAAG,CAACC,IAAI,IAAIT,OAAO,CAACU,QAAQ,CAACD,IAAI,CAAC,CAAC,GAAGd,GAAG,GAAGK,OAAO,CAACU,QAAQ,CAACf,GAAG,CAAC,GAAGA,GAAG,EACvGA,GAAG,IAAIW,KAAK,CAACC,OAAO,CAACZ,GAAG,CAAC,GAAGA,GAAG,CAACa,GAAG,CAACC,IAAI,IAAIT,OAAO,CAACW,IAAI,CAACF,IAAI,CAAC,CAAC,GAAGd,GAAG,GAAGK,OAAO,CAACW,IAAI,CAAChB,GAAG,CAAC,GAAGA,GAC9F,CAAC;IAED,MAAMiB,IAAI,GAAGtC,UAAU,CAAC,KAAK,CAAC;IAC9B,MAAMuC,aAAa,GAAGxC,GAAG,CAAC,CAAC;IAE3B,MAAMyC,OAAO,GAAG1C,QAAQ,CAAC,MAAM;MAC7B,MAAM2C,KAAK,GAAGpC,WAAW,CAACyB,KAAK,CAACW,KAAK,CAAC;MAEtC,IAAI,CAACA,KAAK,CAACC,MAAM,EAAE,OAAO,IAAI;MAE9B,IAAIvB,KAAK,CAACY,QAAQ,KAAK,IAAI,EAAE;QAC3B,OAAON,CAAC,CAAC,mCAAmC,EAAEgB,KAAK,CAACC,MAAM,CAAC;MAC7D;MAEA,IAAIvB,KAAK,CAACY,QAAQ,KAAK,OAAO,EAAE;QAC9B,MAAMY,KAAK,GAAGF,KAAK,CAAC,CAAC,CAAC;QACtB,MAAMG,GAAG,GAAGH,KAAK,CAACA,KAAK,CAACC,MAAM,GAAG,CAAC,CAAC;QAEnC,OAAOhB,OAAO,CAACmB,OAAO,CAACF,KAAK,CAAC,IAAIjB,OAAO,CAACmB,OAAO,CAACD,GAAG,CAAC,GACjD,GAAGlB,OAAO,CAACoB,MAAM,CAACpB,OAAO,CAACW,IAAI,CAACM,KAAK,CAAC,EAAE,cAAc,CAAC,MAAMjB,OAAO,CAACoB,MAAM,CAACpB,OAAO,CAACW,IAAI,CAACO,GAAG,CAAC,EAAE,cAAc,CAAC,EAAE,GAC/G,EAAE;MACR;MAEA,OAAOlB,OAAO,CAACmB,OAAO,CAACf,KAAK,CAACW,KAAK,CAAC,GAAGf,OAAO,CAACoB,MAAM,CAACpB,OAAO,CAACW,IAAI,CAACP,KAAK,CAACW,KAAK,CAAC,EAAE,cAAc,CAAC,GAAG,EAAE;IACtG,CAAC,CAAC;IAEF,MAAMM,aAAa,GAAGjD,QAAQ,CAAC,MAAM,CAACqB,KAAK,CAAC6B,QAAQ,IAAI,CAAC7B,KAAK,CAAC8B,QAAQ,CAAC;IAExE,SAASC,SAASA,CAAEC,CAAgB,EAAE;MACpC,IAAIA,CAAC,CAACC,GAAG,KAAK,OAAO,EAAE;MAEvB,IAAI,CAACd,IAAI,CAACG,KAAK,IAAI,CAACd,SAAS,CAACc,KAAK,EAAE;QACnCH,IAAI,CAACG,KAAK,GAAG,IAAI;QAEjB;MACF;MAEA,MAAMY,MAAM,GAAGF,CAAC,CAACE,MAA0B;MAE3CvB,KAAK,CAACW,KAAK,GAAGY,MAAM,CAACZ,KAAK;IAC5B;IAEA,SAASa,OAAOA,CAAEH,CAAa,EAAE;MAC/BA,CAAC,CAACI,cAAc,CAAC,CAAC;MAClBJ,CAAC,CAACK,eAAe,CAAC,CAAC;MAEnBlB,IAAI,CAACG,KAAK,GAAG,IAAI;IACnB;IAEA,SAASgB,MAAMA,CAAA,EAAI;MACjBnB,IAAI,CAACG,KAAK,GAAG,KAAK;IACpB;IAEA,SAASiB,aAAaA,CAAEjB,KAAa,EAAE;MACrC,IAAIA,KAAK,IAAI,IAAI,EAAE;MAEnBX,KAAK,CAACW,KAAK,GAAG,IAAI;IACpB;IAEArC,SAAS,CAAC,MAAM;MACd,MAAMuD,gBAAgB,GAAGzE,YAAY,CAAC0E,WAAW,CAACzC,KAAK,CAAC;MACxD,MAAM0C,eAAe,GAAGzE,WAAW,CAACwE,WAAW,CAAC1D,IAAI,CAACiB,KAAK,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;MAC/F,MAAM2C,cAAc,GAAGvE,UAAU,CAACqE,WAAW,CAACzC,KAAK,CAAC;MAEpD,OAAA4C,YAAA,CAAAxE,UAAA,EAAAyE,WAAA;QAAA,OAEUzB;MAAa,GACduB,cAAc;QAAA,SACX3C,KAAK,CAAC8C,KAAK;QAAA,SACX9C,KAAK,CAAC+C,KAAK;QAAA,cACN1B,OAAO,CAACC,KAAK;QAAA,aACdM,aAAa,CAACN,KAAK,GAAGS,SAAS,GAAGiB,SAAS;QAAA,WAC7C7B,IAAI,CAACG,KAAK,IAAId,SAAS,CAACc,KAAK;QAAA,WAC7Bb,KAAK;QAAA,UACNC,IAAI;QAAA,mBACKkB,aAAa,CAACN,KAAK,GAAGa,OAAO,GAAGa,SAAS;QAAA,mBACzCpB,aAAa,CAACN,KAAK,GAAGa,OAAO,GAAGa,SAAS;QAAA,uBACrCT;MAAa;QAGjC,GAAGlC,KAAK;QACRZ,OAAO,EAAEA,CAAA,KAAAmD,YAAA,CAAAK,SAAA,SAAAL,YAAA,CAAA1E,KAAA;UAAA,cAGOiD,IAAI,CAACG,KAAK;UAAA,uBAAA4B,MAAA,IAAV/B,IAAI,CAACG,KAAK,GAAA4B,MAAA;UAAA;UAAA;UAAA,SAGZ1C,SAAS,CAACc,KAAK;UAAA,YACZtB,KAAK,CAACV,QAAQ;UAAA,uBACH,KAAK;UAAA,eACb;QAAK;UAAAG,OAAA,EAAAA,CAAA,MAAAmD,YAAA,CAAA7E,YAAA,EAAA8E,WAAA,CAGZL,gBAAgB;YAAA,cACX7B,KAAK,CAACW,KAAK;YAAA,uBAAA4B,MAAA,IAAXvC,KAAK,CAACW,KAAK,GAAA4B,MAAA;YAAA,UACZZ,MAAM;YAAA,YACJa,CAAA,KAAMhC,IAAI,CAACG,KAAK,GAAG;UAAK;YAGjC7B,OAAO,EAAE2D,KAAA,IAA8D;cAAA,IAA7D;gBAAEC,OAAO;gBAAE1C,KAAK,EAAE2C,UAAU;gBAAEC,IAAI;gBAAEC,MAAM;gBAAEC;cAAW,CAAC,GAAAL,KAAA;cAChE,OAAAR,YAAA,CAAA3E,WAAA,EAAA4E,WAAA,CAESH,eAAe;gBAAA,cACP1C,KAAK,CAACZ,WAAW,GAAGuB,KAAK,CAACW,KAAK,GAAGgC,UAAU,CAAChC,KAAK;gBAAA,uBACzCpB,GAAG,IAAI;kBAC3B,IAAI,CAACF,KAAK,CAACZ,WAAW,EAAE;oBACtBkE,UAAU,CAAChC,KAAK,GAAGpB,GAAG;kBACxB,CAAC,MAAM;oBACLS,KAAK,CAACW,KAAK,GAAGpB,GAAG;oBAEjB,IAAI,CAACF,KAAK,CAACY,QAAQ,EAAEO,IAAI,CAACG,KAAK,GAAG,KAAK;kBACzC;gBACF,CAAC;gBAAA,eACcU,CAAa,IAAKA,CAAC,CAACI,cAAc,CAAC;cAAC;gBAGjDiB,OAAO,EAAE,CAACrD,KAAK,CAACZ,WAAW,GAAG,MAAMiB,KAAK,CAACgD,OAAO,GAAG;kBAAEE,IAAI;kBAAEC,MAAM;kBAAEC;gBAAW,CAAC,CAAC,IAAIJ,OAAO,CAAC,CAAC,GAAGL;cAAS;YAIlH;UAAC;QAAA,IAKL3C,KAAK,CAACZ,OAAO,GAAG,CAAC;MAEtB;IAIT,CAAC,CAAC;IAEF,OAAOjB,WAAW,CAAC,CAAC,CAAC,EAAE4C,aAAa,CAAC;EACvC;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1050,7 +1050,10 @@ declare const VDateInput: {
1050
1050
  type: PropType<"month" | "months" | "year">;
1051
1051
  default: string;
1052
1052
  };
1053
- showAdjacentMonths: BooleanConstructor;
1053
+ showAdjacentMonths: {
1054
+ type: PropType<boolean>;
1055
+ default: boolean;
1056
+ };
1054
1057
  weekdays: {
1055
1058
  type: {
1056
1059
  (arrayLength: number): number[];
@@ -1070,15 +1073,12 @@ declare const VDateInput: {
1070
1073
  };
1071
1074
  default: () => number[];
1072
1075
  };
1073
- weeksInMonth: Omit<Omit<{
1076
+ weeksInMonth: Omit<{
1074
1077
  type: PropType<"dynamic" | "static">;
1075
1078
  default: string;
1076
1079
  }, "type" | "default"> & {
1077
1080
  type: PropType<"static" | "dynamic">;
1078
1081
  default: NonNullable<"static" | "dynamic">;
1079
- }, "type" | "default"> & {
1080
- type: PropType<"static" | "dynamic">;
1081
- default: NonNullable<"static" | "dynamic">;
1082
1082
  };
1083
1083
  firstDayOfWeek: (StringConstructor | NumberConstructor)[];
1084
1084
  allowedDates: PropType<unknown[] | ((date: unknown) => boolean)>;
@@ -1271,7 +1271,10 @@ declare const VDateInput: {
1271
1271
  type: PropType<"month" | "months" | "year">;
1272
1272
  default: string;
1273
1273
  };
1274
- showAdjacentMonths: BooleanConstructor;
1274
+ showAdjacentMonths: {
1275
+ type: PropType<boolean>;
1276
+ default: boolean;
1277
+ };
1275
1278
  weekdays: {
1276
1279
  type: {
1277
1280
  (arrayLength: number): number[];
@@ -1291,15 +1294,12 @@ declare const VDateInput: {
1291
1294
  };
1292
1295
  default: () => number[];
1293
1296
  };
1294
- weeksInMonth: Omit<Omit<{
1297
+ weeksInMonth: Omit<{
1295
1298
  type: PropType<"dynamic" | "static">;
1296
1299
  default: string;
1297
1300
  }, "type" | "default"> & {
1298
1301
  type: PropType<"static" | "dynamic">;
1299
1302
  default: NonNullable<"static" | "dynamic">;
1300
- }, "type" | "default"> & {
1301
- type: PropType<"static" | "dynamic">;
1302
- default: NonNullable<"static" | "dynamic">;
1303
1303
  };
1304
1304
  firstDayOfWeek: (StringConstructor | NumberConstructor)[];
1305
1305
  allowedDates: PropType<unknown[] | ((date: unknown) => boolean)>;
@@ -1,5 +1,5 @@
1
1
  .v-file-upload {
2
- padding: 64px 0;
2
+ padding: 64px 16px;
3
3
  flex-direction: column;
4
4
  justify-content: center;
5
5
  align-items: center;
@@ -41,6 +41,7 @@
41
41
  .v-file-upload-title {
42
42
  font-size: 1.5rem;
43
43
  font-weight: 600;
44
+ text-align: center;
44
45
  }
45
46
 
46
47
  .v-file-upload-icon {
@@ -64,6 +65,9 @@
64
65
  justify-content: center;
65
66
  width: 100%;
66
67
  }
68
+ .v-file-upload-divider .v-divider__wrapper {
69
+ max-width: 100%;
70
+ }
67
71
 
68
72
  .v-file-upload-items {
69
73
  margin: 16px 0;
@@ -120,8 +120,9 @@ export const VFileUpload = genericComponent()({
120
120
  inputRef.value?.click();
121
121
  }
122
122
  function onClickRemove(index) {
123
- model.value = model.value.filter((_, i) => i !== index);
124
- if (model.value.length > 0 || !inputRef.value) return;
123
+ const newValue = model.value.filter((_, i) => i !== index);
124
+ model.value = newValue;
125
+ if (newValue.length > 0 || !inputRef.value) return;
125
126
  inputRef.value.value = '';
126
127
  }
127
128
  useRender(() => {