vuetify 3.5.10 → 3.5.12

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 (184) hide show
  1. package/dist/_component-variables-labs.sass +2 -1
  2. package/dist/json/attributes.json +243 -19
  3. package/dist/json/importMap-labs.json +22 -10
  4. package/dist/json/importMap.json +124 -124
  5. package/dist/json/tags.json +71 -0
  6. package/dist/json/web-types.json +747 -38
  7. package/dist/vuetify-labs.css +2467 -2217
  8. package/dist/vuetify-labs.d.ts +1117 -154
  9. package/dist/vuetify-labs.esm.js +683 -33
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +683 -33
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +415 -406
  14. package/dist/vuetify.d.ts +320 -191
  15. package/dist/vuetify.esm.js +35 -21
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +35 -21
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +95 -94
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/components/VAvatar/VAvatar.css +6 -0
  23. package/lib/components/VAvatar/VAvatar.sass +6 -0
  24. package/lib/components/VAvatar/_variables.scss +2 -0
  25. package/lib/components/VCheckbox/index.d.mts +54 -18
  26. package/lib/components/VChip/VChip.css +5 -2
  27. package/lib/components/VChip/VChip.sass +3 -0
  28. package/lib/components/VChip/_variables.scss +2 -2
  29. package/lib/components/VDivider/VDivider.css +1 -1
  30. package/lib/components/VDivider/VDivider.sass +1 -1
  31. package/lib/components/VExpansionPanel/VExpansionPanel.css +3 -3
  32. package/lib/components/VExpansionPanel/VExpansionPanel.sass +2 -2
  33. package/lib/components/VField/VField.css +1 -1
  34. package/lib/components/VField/_variables.scss +1 -1
  35. package/lib/components/VFileInput/index.d.mts +12 -12
  36. package/lib/components/VForm/index.d.mts +42 -42
  37. package/lib/components/VInput/index.d.mts +6 -6
  38. package/lib/components/VOtpInput/VOtpInput.mjs +2 -2
  39. package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
  40. package/lib/components/VRadio/index.d.mts +27 -9
  41. package/lib/components/VRadioGroup/index.d.mts +27 -9
  42. package/lib/components/VSelectionControl/VSelectionControl.mjs +1 -0
  43. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  44. package/lib/components/VSelectionControl/index.d.mts +27 -9
  45. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +1 -1
  46. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
  47. package/lib/components/VSelectionControlGroup/index.d.mts +27 -9
  48. package/lib/components/VSwitch/index.d.mts +27 -9
  49. package/lib/components/VTextField/index.d.mts +12 -12
  50. package/lib/components/VTextarea/index.d.mts +12 -12
  51. package/lib/components/VValidation/index.d.mts +6 -6
  52. package/lib/components/index.d.mts +279 -153
  53. package/lib/composables/form.mjs.map +1 -1
  54. package/lib/composables/router.mjs +16 -8
  55. package/lib/composables/router.mjs.map +1 -1
  56. package/lib/composables/transition.mjs +5 -2
  57. package/lib/composables/transition.mjs.map +1 -1
  58. package/lib/composables/validation.mjs +5 -4
  59. package/lib/composables/validation.mjs.map +1 -1
  60. package/lib/entry-bundler.mjs +1 -1
  61. package/lib/framework.mjs +1 -1
  62. package/lib/index.d.mts +41 -38
  63. package/lib/labs/VNumberInput/VNumberInput.mjs +10 -10
  64. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  65. package/lib/labs/VTimePicker/SelectingTimes.mjs.map +1 -0
  66. package/lib/labs/VTimePicker/VTimePicker.css +8 -0
  67. package/lib/labs/VTimePicker/VTimePicker.mjs +265 -0
  68. package/lib/labs/VTimePicker/VTimePicker.mjs.map +1 -0
  69. package/lib/labs/VTimePicker/VTimePicker.sass +10 -0
  70. package/lib/labs/VTimePicker/VTimePickerClock.css +130 -0
  71. package/lib/labs/VTimePicker/VTimePickerClock.mjs +244 -0
  72. package/lib/labs/VTimePicker/VTimePickerClock.mjs.map +1 -0
  73. package/lib/{components → labs}/VTimePicker/VTimePickerClock.sass +22 -39
  74. package/lib/labs/VTimePicker/VTimePickerControls.css +104 -0
  75. package/lib/labs/VTimePicker/VTimePickerControls.mjs +125 -0
  76. package/lib/labs/VTimePicker/VTimePickerControls.mjs.map +1 -0
  77. package/lib/labs/VTimePicker/VTimePickerControls.sass +102 -0
  78. package/lib/labs/VTimePicker/_variables.scss +34 -0
  79. package/lib/labs/VTimePicker/index.d.mts +848 -0
  80. package/lib/labs/VTimePicker/index.mjs +4 -0
  81. package/lib/labs/VTimePicker/index.mjs.map +1 -0
  82. package/lib/labs/components.d.mts +835 -1
  83. package/lib/labs/components.mjs +1 -0
  84. package/lib/labs/components.mjs.map +1 -1
  85. package/lib/locale/af.mjs +2 -1
  86. package/lib/locale/af.mjs.map +1 -1
  87. package/lib/locale/ar.mjs +2 -1
  88. package/lib/locale/ar.mjs.map +1 -1
  89. package/lib/locale/az.mjs +2 -1
  90. package/lib/locale/az.mjs.map +1 -1
  91. package/lib/locale/bg.mjs +2 -1
  92. package/lib/locale/bg.mjs.map +1 -1
  93. package/lib/locale/ca.mjs +2 -1
  94. package/lib/locale/ca.mjs.map +1 -1
  95. package/lib/locale/ckb.mjs +2 -1
  96. package/lib/locale/ckb.mjs.map +1 -1
  97. package/lib/locale/cs.mjs +2 -1
  98. package/lib/locale/cs.mjs.map +1 -1
  99. package/lib/locale/da.mjs +2 -1
  100. package/lib/locale/da.mjs.map +1 -1
  101. package/lib/locale/de.mjs +2 -1
  102. package/lib/locale/de.mjs.map +1 -1
  103. package/lib/locale/el.mjs +2 -1
  104. package/lib/locale/el.mjs.map +1 -1
  105. package/lib/locale/en.mjs +2 -1
  106. package/lib/locale/en.mjs.map +1 -1
  107. package/lib/locale/es.mjs +2 -1
  108. package/lib/locale/es.mjs.map +1 -1
  109. package/lib/locale/et.mjs +2 -1
  110. package/lib/locale/et.mjs.map +1 -1
  111. package/lib/locale/fa.mjs +2 -1
  112. package/lib/locale/fa.mjs.map +1 -1
  113. package/lib/locale/fi.mjs +2 -1
  114. package/lib/locale/fi.mjs.map +1 -1
  115. package/lib/locale/fr.mjs +2 -1
  116. package/lib/locale/fr.mjs.map +1 -1
  117. package/lib/locale/he.mjs +2 -1
  118. package/lib/locale/he.mjs.map +1 -1
  119. package/lib/locale/hr.mjs +2 -1
  120. package/lib/locale/hr.mjs.map +1 -1
  121. package/lib/locale/hu.mjs +2 -1
  122. package/lib/locale/hu.mjs.map +1 -1
  123. package/lib/locale/id.mjs +2 -1
  124. package/lib/locale/id.mjs.map +1 -1
  125. package/lib/locale/index.d.mts +43 -0
  126. package/lib/locale/it.mjs +2 -1
  127. package/lib/locale/it.mjs.map +1 -1
  128. package/lib/locale/ja.mjs +2 -1
  129. package/lib/locale/ja.mjs.map +1 -1
  130. package/lib/locale/km.mjs +2 -1
  131. package/lib/locale/km.mjs.map +1 -1
  132. package/lib/locale/ko.mjs +2 -1
  133. package/lib/locale/ko.mjs.map +1 -1
  134. package/lib/locale/lt.mjs +2 -1
  135. package/lib/locale/lt.mjs.map +1 -1
  136. package/lib/locale/lv.mjs +2 -1
  137. package/lib/locale/lv.mjs.map +1 -1
  138. package/lib/locale/nl.mjs +2 -1
  139. package/lib/locale/nl.mjs.map +1 -1
  140. package/lib/locale/no.mjs +2 -1
  141. package/lib/locale/no.mjs.map +1 -1
  142. package/lib/locale/pl.mjs +2 -1
  143. package/lib/locale/pl.mjs.map +1 -1
  144. package/lib/locale/pt.mjs +2 -1
  145. package/lib/locale/pt.mjs.map +1 -1
  146. package/lib/locale/ro.mjs +2 -1
  147. package/lib/locale/ro.mjs.map +1 -1
  148. package/lib/locale/ru.mjs +2 -1
  149. package/lib/locale/ru.mjs.map +1 -1
  150. package/lib/locale/sk.mjs +2 -1
  151. package/lib/locale/sk.mjs.map +1 -1
  152. package/lib/locale/sl.mjs +2 -1
  153. package/lib/locale/sl.mjs.map +1 -1
  154. package/lib/locale/sr-Cyrl.mjs +2 -1
  155. package/lib/locale/sr-Cyrl.mjs.map +1 -1
  156. package/lib/locale/sr-Latn.mjs +2 -1
  157. package/lib/locale/sr-Latn.mjs.map +1 -1
  158. package/lib/locale/sv.mjs +2 -1
  159. package/lib/locale/sv.mjs.map +1 -1
  160. package/lib/locale/th.mjs +2 -1
  161. package/lib/locale/th.mjs.map +1 -1
  162. package/lib/locale/tr.mjs +2 -1
  163. package/lib/locale/tr.mjs.map +1 -1
  164. package/lib/locale/uk.mjs +2 -1
  165. package/lib/locale/uk.mjs.map +1 -1
  166. package/lib/locale/vi.mjs +2 -1
  167. package/lib/locale/vi.mjs.map +1 -1
  168. package/lib/locale/zh-Hans.mjs +2 -1
  169. package/lib/locale/zh-Hans.mjs.map +1 -1
  170. package/lib/locale/zh-Hant.mjs +2 -1
  171. package/lib/locale/zh-Hant.mjs.map +1 -1
  172. package/package.json +4 -4
  173. package/lib/components/VTimePicker/SelectingTimes.mjs.map +0 -1
  174. package/lib/components/VTimePicker/VTimePicker.mjs +0 -288
  175. package/lib/components/VTimePicker/VTimePicker.mjs.map +0 -1
  176. package/lib/components/VTimePicker/VTimePickerClock.mjs +0 -251
  177. package/lib/components/VTimePicker/VTimePickerClock.mjs.map +0 -1
  178. package/lib/components/VTimePicker/VTimePickerTitle.mjs +0 -64
  179. package/lib/components/VTimePicker/VTimePickerTitle.mjs.map +0 -1
  180. package/lib/components/VTimePicker/VTimePickerTitle.sass +0 -61
  181. package/lib/components/VTimePicker/_variables.scss +0 -32
  182. package/lib/components/VTimePicker/index.mjs +0 -12
  183. package/lib/components/VTimePicker/index.mjs.map +0 -1
  184. /package/lib/{components → labs}/VTimePicker/SelectingTimes.mjs +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"form.mjs","names":["useProxiedModel","computed","inject","provide","ref","shallowRef","toRef","watch","consoleWarn","propsFactory","FormKey","Symbol","for","makeFormProps","disabled","Boolean","fastFail","readonly","modelValue","type","default","validateOn","String","createForm","props","model","isDisabled","isReadonly","isValidating","items","errors","validate","results","valid","value","item","itemErrorMessages","length","push","id","errorMessages","reset","forEach","resetValidation","invalid","isValid","deep","flush","register","_ref","some","unregister","filter","update","found","find","useForm"],"sources":["../../src/composables/form.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, ref, shallowRef, toRef, watch } from 'vue'\nimport { consoleWarn, propsFactory } from '@/util'\n\n// Types\nimport type { ComputedRef, InjectionKey, PropType, Ref } from 'vue'\nimport type { ValidationProps } from './validation'\nimport type { EventProp } from '@/util'\n\nexport interface FormProvide {\n register: (item: {\n id: number | string\n validate: () => Promise<string[]>\n reset: () => void\n resetValidation: () => void\n }) => void\n unregister: (id: number | string) => void\n update: (id: number | string, isValid: boolean | null, errorMessages: string[]) => void\n items: Ref<FormField[]>\n isDisabled: ComputedRef<boolean>\n isReadonly: ComputedRef<boolean>\n isValidating: Ref<boolean>\n isValid: Ref<boolean | null>\n validateOn: Ref<FormProps['validateOn']>\n}\n\nexport interface FormField {\n id: number | string\n validate: () => Promise<string[]>\n reset: () => void\n resetValidation: () => void\n isValid: boolean | null\n errorMessages: string[]\n}\n\nexport interface FieldValidationResult {\n id: number | string\n errorMessages: string[]\n}\n\nexport interface FormValidationResult {\n valid: boolean\n errors: FieldValidationResult[]\n}\n\nexport interface SubmitEventPromise extends SubmitEvent, Promise<FormValidationResult> {}\n\nexport const FormKey: InjectionKey<FormProvide> = Symbol.for('vuetify:form')\n\nexport interface FormProps {\n disabled: boolean\n fastFail: boolean\n readonly: boolean\n modelValue: boolean | null\n 'onUpdate:modelValue': EventProp<[boolean | null]> | undefined\n validateOn: ValidationProps['validateOn']\n}\n\nexport const makeFormProps = propsFactory({\n disabled: Boolean,\n fastFail: Boolean,\n readonly: Boolean,\n modelValue: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n validateOn: {\n type: String as PropType<FormProps['validateOn']>,\n default: 'input',\n },\n}, 'form')\n\nexport function createForm (props: FormProps) {\n const model = useProxiedModel(props, 'modelValue')\n\n const isDisabled = computed(() => props.disabled)\n const isReadonly = computed(() => props.readonly)\n const isValidating = shallowRef(false)\n const items = ref<FormField[]>([])\n const errors = ref<FieldValidationResult[]>([])\n\n async function validate () {\n const results = []\n let valid = true\n\n errors.value = []\n isValidating.value = true\n\n for (const item of items.value) {\n const itemErrorMessages = await item.validate()\n\n if (itemErrorMessages.length > 0) {\n valid = false\n\n results.push({\n id: item.id,\n errorMessages: itemErrorMessages,\n })\n }\n\n if (!valid && props.fastFail) break\n }\n\n errors.value = results\n isValidating.value = false\n\n return { valid, errors: errors.value }\n }\n\n function reset () {\n items.value.forEach(item => item.reset())\n }\n\n function resetValidation () {\n items.value.forEach(item => item.resetValidation())\n }\n\n watch(items, () => {\n let valid = 0\n let invalid = 0\n const results = []\n\n for (const item of items.value) {\n if (item.isValid === false) {\n invalid++\n results.push({\n id: item.id,\n errorMessages: item.errorMessages,\n })\n } else if (item.isValid === true) valid++\n }\n\n errors.value = results\n model.value =\n invalid > 0 ? false\n : valid === items.value.length ? true\n : null\n }, { deep: true, flush: 'post' })\n\n provide(FormKey, {\n register: ({ id, validate, reset, resetValidation }) => {\n if (items.value.some(item => item.id === id)) {\n consoleWarn(`Duplicate input name \"${id}\"`)\n }\n\n items.value.push({\n id,\n validate,\n reset,\n resetValidation,\n isValid: null,\n errorMessages: [],\n })\n },\n unregister: id => {\n items.value = items.value.filter(item => {\n return item.id !== id\n })\n },\n update: (id, isValid, errorMessages) => {\n const found = items.value.find(item => item.id === id)\n\n if (!found) return\n\n found.isValid = isValid\n found.errorMessages = errorMessages\n },\n isDisabled,\n isReadonly,\n isValidating,\n isValid: model,\n items,\n validateOn: toRef(props, 'validateOn'),\n })\n\n return {\n errors,\n isDisabled,\n isReadonly,\n isValidating,\n isValid: model,\n items,\n validate,\n reset,\n resetValidation,\n }\n}\n\nexport function useForm () {\n return inject(FormKey, null)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"form.mjs","names":["useProxiedModel","computed","inject","provide","ref","shallowRef","toRef","watch","consoleWarn","propsFactory","FormKey","Symbol","for","makeFormProps","disabled","Boolean","fastFail","readonly","modelValue","type","default","validateOn","String","createForm","props","model","isDisabled","isReadonly","isValidating","items","errors","validate","results","valid","value","item","itemErrorMessages","length","push","id","errorMessages","reset","forEach","resetValidation","invalid","isValid","deep","flush","register","_ref","some","unregister","filter","update","found","find","useForm"],"sources":["../../src/composables/form.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, ref, shallowRef, toRef, watch } from 'vue'\nimport { consoleWarn, propsFactory } from '@/util'\n\n// Types\nimport type { ComputedRef, InjectionKey, PropType, Ref } from 'vue'\nimport type { ValidationProps } from './validation'\nimport type { EventProp } from '@/util'\n\nexport interface FormProvide {\n register: (item: {\n id: number | string\n validate: () => Promise<string[]>\n reset: () => Promise<void>\n resetValidation: () => Promise<void>\n }) => void\n unregister: (id: number | string) => void\n update: (id: number | string, isValid: boolean | null, errorMessages: string[]) => void\n items: Ref<FormField[]>\n isDisabled: ComputedRef<boolean>\n isReadonly: ComputedRef<boolean>\n isValidating: Ref<boolean>\n isValid: Ref<boolean | null>\n validateOn: Ref<FormProps['validateOn']>\n}\n\nexport interface FormField {\n id: number | string\n validate: () => Promise<string[]>\n reset: () => Promise<void>\n resetValidation: () => Promise<void>\n isValid: boolean | null\n errorMessages: string[]\n}\n\nexport interface FieldValidationResult {\n id: number | string\n errorMessages: string[]\n}\n\nexport interface FormValidationResult {\n valid: boolean\n errors: FieldValidationResult[]\n}\n\nexport interface SubmitEventPromise extends SubmitEvent, Promise<FormValidationResult> {}\n\nexport const FormKey: InjectionKey<FormProvide> = Symbol.for('vuetify:form')\n\nexport interface FormProps {\n disabled: boolean\n fastFail: boolean\n readonly: boolean\n modelValue: boolean | null\n 'onUpdate:modelValue': EventProp<[boolean | null]> | undefined\n validateOn: ValidationProps['validateOn']\n}\n\nexport const makeFormProps = propsFactory({\n disabled: Boolean,\n fastFail: Boolean,\n readonly: Boolean,\n modelValue: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n validateOn: {\n type: String as PropType<FormProps['validateOn']>,\n default: 'input',\n },\n}, 'form')\n\nexport function createForm (props: FormProps) {\n const model = useProxiedModel(props, 'modelValue')\n\n const isDisabled = computed(() => props.disabled)\n const isReadonly = computed(() => props.readonly)\n const isValidating = shallowRef(false)\n const items = ref<FormField[]>([])\n const errors = ref<FieldValidationResult[]>([])\n\n async function validate () {\n const results = []\n let valid = true\n\n errors.value = []\n isValidating.value = true\n\n for (const item of items.value) {\n const itemErrorMessages = await item.validate()\n\n if (itemErrorMessages.length > 0) {\n valid = false\n\n results.push({\n id: item.id,\n errorMessages: itemErrorMessages,\n })\n }\n\n if (!valid && props.fastFail) break\n }\n\n errors.value = results\n isValidating.value = false\n\n return { valid, errors: errors.value }\n }\n\n function reset () {\n items.value.forEach(item => item.reset())\n }\n\n function resetValidation () {\n items.value.forEach(item => item.resetValidation())\n }\n\n watch(items, () => {\n let valid = 0\n let invalid = 0\n const results = []\n\n for (const item of items.value) {\n if (item.isValid === false) {\n invalid++\n results.push({\n id: item.id,\n errorMessages: item.errorMessages,\n })\n } else if (item.isValid === true) valid++\n }\n\n errors.value = results\n model.value =\n invalid > 0 ? false\n : valid === items.value.length ? true\n : null\n }, { deep: true, flush: 'post' })\n\n provide(FormKey, {\n register: ({ id, validate, reset, resetValidation }) => {\n if (items.value.some(item => item.id === id)) {\n consoleWarn(`Duplicate input name \"${id}\"`)\n }\n\n items.value.push({\n id,\n validate,\n reset,\n resetValidation,\n isValid: null,\n errorMessages: [],\n })\n },\n unregister: id => {\n items.value = items.value.filter(item => {\n return item.id !== id\n })\n },\n update: (id, isValid, errorMessages) => {\n const found = items.value.find(item => item.id === id)\n\n if (!found) return\n\n found.isValid = isValid\n found.errorMessages = errorMessages\n },\n isDisabled,\n isReadonly,\n isValidating,\n isValid: model,\n items,\n validateOn: toRef(props, 'validateOn'),\n })\n\n return {\n errors,\n isDisabled,\n isReadonly,\n isValidating,\n isValid: model,\n items,\n validate,\n reset,\n resetValidation,\n }\n}\n\nexport function useForm () {\n return inject(FormKey, null)\n}\n"],"mappings":"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"}
@@ -21,19 +21,27 @@ export function useLink(props, attrs) {
21
21
  href: toRef(props, 'href')
22
22
  };
23
23
  }
24
- const link = props.to ? RouterLink.useLink(props) : undefined;
24
+ // vue-router useLink `to` prop needs to be reactive and useLink will crash if undefined
25
+ const linkProps = computed(() => ({
26
+ ...props,
27
+ to: props.to ? props.to : {}
28
+ }));
29
+ const routerLink = RouterLink.useLink(linkProps.value);
30
+ // Actual link needs to be undefined when to prop is not used
31
+ const link = computed(() => props.to ? routerLink : undefined);
25
32
  const route = useRoute();
26
33
  return {
27
34
  isLink,
28
35
  isClickable,
29
- route: link?.route,
30
- navigate: link?.navigate,
31
- isActive: link && computed(() => {
32
- if (!props.exact) return link.isActive?.value;
33
- if (!route.value) return link.isExactActive?.value;
34
- return link.isExactActive?.value && deepEqual(link.route.value.query, route.value.query);
36
+ route: link.value?.route,
37
+ navigate: link.value?.navigate,
38
+ isActive: computed(() => {
39
+ if (!link.value) return false;
40
+ if (!props.exact) return link.value.isActive?.value ?? false;
41
+ if (!route.value) return link.value.isExactActive?.value ?? false;
42
+ return link.value.isExactActive?.value && deepEqual(link.value.route.value.query, route.value.query);
35
43
  }),
36
- href: computed(() => props.to ? link?.route.value.href : props.href)
44
+ href: computed(() => props.to ? link.value?.route.value.href : props.href)
37
45
  };
38
46
  }
39
47
  export const makeRouterProps = propsFactory({
@@ -1 +1 @@
1
- {"version":3,"file":"router.mjs","names":["computed","nextTick","onScopeDispose","resolveDynamicComponent","toRef","deepEqual","getCurrentInstance","hasEvent","IN_BROWSER","propsFactory","useRoute","vm","proxy","$route","useRouter","$router","useLink","props","attrs","RouterLink","isLink","href","to","isClickable","value","link","undefined","route","navigate","isActive","exact","isExactActive","query","makeRouterProps","String","replace","Boolean","Object","inTransition","useBackButton","router","cb","popped","removeBefore","removeAfter","window","addEventListener","onPopstate","beforeEach","from","next","setTimeout","afterEach","removeEventListener","e","state","replaced"],"sources":["../../src/composables/router.tsx"],"sourcesContent":["// Utilities\nimport {\n computed,\n nextTick,\n onScopeDispose,\n resolveDynamicComponent,\n toRef,\n} from 'vue'\nimport { deepEqual, getCurrentInstance, hasEvent, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { ComputedRef, PropType, Ref, SetupContext } from 'vue'\nimport type {\n RouterLink as _RouterLink,\n useLink as _useLink,\n NavigationGuardNext,\n RouteLocationNormalizedLoaded,\n RouteLocationRaw,\n Router,\n UseLinkOptions,\n} from 'vue-router'\nimport type { EventProp } from '@/util'\n\nexport function useRoute (): Ref<RouteLocationNormalizedLoaded | undefined> {\n const vm = getCurrentInstance('useRoute')\n\n return computed(() => vm?.proxy?.$route)\n}\n\nexport function useRouter (): Router | undefined {\n return getCurrentInstance('useRouter')?.proxy?.$router\n}\n\nexport interface LinkProps {\n href: string | undefined\n replace: boolean | undefined\n to: RouteLocationRaw | undefined\n exact: boolean | undefined\n}\n\nexport interface LinkListeners {\n onClick?: EventProp | undefined\n onClickOnce?: EventProp | undefined\n}\n\nexport interface UseLink extends Omit<Partial<ReturnType<typeof _useLink>>, 'href'> {\n isLink: ComputedRef<boolean>\n isClickable: ComputedRef<boolean>\n href: Ref<string | undefined>\n}\n\nexport function useLink (props: LinkProps & LinkListeners, attrs: SetupContext['attrs']): UseLink {\n const RouterLink = resolveDynamicComponent('RouterLink') as typeof _RouterLink | string\n\n const isLink = computed(() => !!(props.href || props.to))\n const isClickable = computed(() => {\n return isLink?.value || hasEvent(attrs, 'click') || hasEvent(props, 'click')\n })\n\n if (typeof RouterLink === 'string') {\n return {\n isLink,\n isClickable,\n href: toRef(props, 'href'),\n }\n }\n\n const link = props.to ? RouterLink.useLink(props as UseLinkOptions) : undefined\n const route = useRoute()\n\n return {\n isLink,\n isClickable,\n route: link?.route,\n navigate: link?.navigate,\n isActive: link && computed(() => {\n if (!props.exact) return link.isActive?.value\n if (!route.value) return link.isExactActive?.value\n\n return link.isExactActive?.value && deepEqual(link.route.value.query, route.value.query)\n }),\n href: computed(() => props.to ? link?.route.value.href : props.href),\n }\n}\n\nexport const makeRouterProps = propsFactory({\n href: String,\n replace: Boolean,\n to: [String, Object] as PropType<RouteLocationRaw>,\n exact: Boolean,\n}, 'router')\n\nlet inTransition = false\nexport function useBackButton (router: Router | undefined, cb: (next: NavigationGuardNext) => void) {\n let popped = false\n let removeBefore: (() => void) | undefined\n let removeAfter: (() => void) | undefined\n\n if (IN_BROWSER) {\n nextTick(() => {\n window.addEventListener('popstate', onPopstate)\n removeBefore = router?.beforeEach((to, from, next) => {\n if (!inTransition) {\n setTimeout(() => popped ? cb(next) : next())\n } else {\n popped ? cb(next) : next()\n }\n inTransition = true\n })\n removeAfter = router?.afterEach(() => {\n inTransition = false\n })\n })\n onScopeDispose(() => {\n window.removeEventListener('popstate', onPopstate)\n removeBefore?.()\n removeAfter?.()\n })\n }\n\n function onPopstate (e: PopStateEvent) {\n if (e.state?.replaced) return\n\n popped = true\n setTimeout(() => (popped = false))\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"router.mjs","names":["computed","nextTick","onScopeDispose","resolveDynamicComponent","toRef","deepEqual","getCurrentInstance","hasEvent","IN_BROWSER","propsFactory","useRoute","vm","proxy","$route","useRouter","$router","useLink","props","attrs","RouterLink","isLink","href","to","isClickable","value","linkProps","routerLink","link","undefined","route","navigate","isActive","exact","isExactActive","query","makeRouterProps","String","replace","Boolean","Object","inTransition","useBackButton","router","cb","popped","removeBefore","removeAfter","window","addEventListener","onPopstate","beforeEach","from","next","setTimeout","afterEach","removeEventListener","e","state","replaced"],"sources":["../../src/composables/router.tsx"],"sourcesContent":["// Utilities\nimport {\n computed,\n nextTick,\n onScopeDispose,\n resolveDynamicComponent,\n toRef,\n} from 'vue'\nimport { deepEqual, getCurrentInstance, hasEvent, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { ComputedRef, PropType, Ref, SetupContext } from 'vue'\nimport type {\n RouterLink as _RouterLink,\n useLink as _useLink,\n NavigationGuardNext,\n RouteLocationNormalizedLoaded,\n RouteLocationRaw,\n Router,\n UseLinkOptions,\n} from 'vue-router'\nimport type { EventProp } from '@/util'\n\nexport function useRoute (): Ref<RouteLocationNormalizedLoaded | undefined> {\n const vm = getCurrentInstance('useRoute')\n\n return computed(() => vm?.proxy?.$route)\n}\n\nexport function useRouter (): Router | undefined {\n return getCurrentInstance('useRouter')?.proxy?.$router\n}\n\nexport interface LinkProps {\n href: string | undefined\n replace: boolean | undefined\n to: RouteLocationRaw | undefined\n exact: boolean | undefined\n}\n\nexport interface LinkListeners {\n onClick?: EventProp | undefined\n onClickOnce?: EventProp | undefined\n}\n\nexport interface UseLink extends Omit<Partial<ReturnType<typeof _useLink>>, 'href'> {\n isLink: ComputedRef<boolean>\n isClickable: ComputedRef<boolean>\n href: Ref<string | undefined>\n}\n\nexport function useLink (props: LinkProps & LinkListeners, attrs: SetupContext['attrs']): UseLink {\n const RouterLink = resolveDynamicComponent('RouterLink') as typeof _RouterLink | string\n\n const isLink = computed(() => !!(props.href || props.to))\n const isClickable = computed(() => {\n return isLink?.value || hasEvent(attrs, 'click') || hasEvent(props, 'click')\n })\n\n if (typeof RouterLink === 'string') {\n return {\n isLink,\n isClickable,\n href: toRef(props, 'href'),\n }\n }\n // vue-router useLink `to` prop needs to be reactive and useLink will crash if undefined\n const linkProps = computed(() => ({ ...props, to: props.to ? props.to : {} }))\n\n const routerLink = RouterLink.useLink(linkProps.value as UseLinkOptions)\n // Actual link needs to be undefined when to prop is not used\n const link = computed(() => props.to ? routerLink : undefined)\n const route = useRoute()\n\n return {\n isLink,\n isClickable,\n route: link.value?.route,\n navigate: link.value?.navigate,\n isActive: computed(() => {\n if (!link.value) return false\n if (!props.exact) return link.value.isActive?.value ?? false\n if (!route.value) return link.value.isExactActive?.value ?? false\n\n return link.value.isExactActive?.value && deepEqual(link.value.route.value.query, route.value.query)\n }),\n href: computed(() => props.to ? link.value?.route.value.href : props.href),\n }\n}\n\nexport const makeRouterProps = propsFactory({\n href: String,\n replace: Boolean,\n to: [String, Object] as PropType<RouteLocationRaw>,\n exact: Boolean,\n}, 'router')\n\nlet inTransition = false\nexport function useBackButton (router: Router | undefined, cb: (next: NavigationGuardNext) => void) {\n let popped = false\n let removeBefore: (() => void) | undefined\n let removeAfter: (() => void) | undefined\n\n if (IN_BROWSER) {\n nextTick(() => {\n window.addEventListener('popstate', onPopstate)\n removeBefore = router?.beforeEach((to, from, next) => {\n if (!inTransition) {\n setTimeout(() => popped ? cb(next) : next())\n } else {\n popped ? cb(next) : next()\n }\n inTransition = true\n })\n removeAfter = router?.afterEach(() => {\n inTransition = false\n })\n })\n onScopeDispose(() => {\n window.removeEventListener('popstate', onPopstate)\n removeBefore?.()\n removeAfter?.()\n })\n }\n\n function onPopstate (e: PopStateEvent) {\n if (e.state?.replaced) return\n\n popped = true\n setTimeout(() => (popped = false))\n }\n}\n"],"mappings":"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"}
@@ -24,9 +24,12 @@ export const MaybeTransition = (props, _ref) => {
24
24
  } = typeof transition === 'object' ? transition : {};
25
25
  return h(component, mergeProps(typeof transition === 'string' ? {
26
26
  name: disabled ? '' : transition
27
- } : customProps, typeof transition === 'string' ? {} : {
27
+ } : customProps, typeof transition === 'string' ? {} : Object.fromEntries(Object.entries({
28
28
  disabled,
29
29
  group
30
- }, rest), slots);
30
+ }).filter(_ref2 => {
31
+ let [_, v] = _ref2;
32
+ return v !== undefined;
33
+ })), rest), slots);
31
34
  };
32
35
  //# sourceMappingURL=transition.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"transition.mjs","names":["h","mergeProps","Transition","TransitionGroup","propsFactory","makeTransitionProps","transition","type","Boolean","String","Object","default","validator","val","MaybeTransition","props","_ref","slots","disabled","group","rest","component","customProps","name"],"sources":["../../src/composables/transition.ts"],"sourcesContent":["// Utilities\nimport { h, mergeProps, Transition, TransitionGroup } from 'vue'\nimport { propsFactory } from '@/util'\n\n// Types\nimport type { Component, FunctionalComponent, PropType, TransitionProps } from 'vue'\n\nexport const makeTransitionProps = propsFactory({\n transition: {\n type: [Boolean, String, Object] as PropType<string | boolean | TransitionProps & { component?: Component }>,\n default: 'fade-transition',\n validator: val => val !== true,\n },\n}, 'transition')\n\ninterface MaybeTransitionProps extends TransitionProps {\n transition?: string | boolean | TransitionProps & { component?: any }\n disabled?: boolean\n group?: boolean\n}\n\nexport const MaybeTransition: FunctionalComponent<MaybeTransitionProps> = (props, { slots }) => {\n const { transition, disabled, group, ...rest } = props\n\n const {\n component = group ? TransitionGroup : Transition,\n ...customProps\n } = typeof transition === 'object' ? transition : {}\n\n return h(\n component,\n mergeProps(\n typeof transition === 'string'\n ? { name: disabled ? '' : transition }\n : customProps as any,\n typeof transition === 'string'\n ? {}\n : { disabled, group },\n rest as any,\n ),\n slots\n )\n}\n"],"mappings":"AAAA;AACA,SAASA,CAAC,EAAEC,UAAU,EAAEC,UAAU,EAAEC,eAAe,QAAQ,KAAK;AAAA,SACvDC,YAAY,6BAErB;AAGA,OAAO,MAAMC,mBAAmB,GAAGD,YAAY,CAAC;EAC9CE,UAAU,EAAE;IACVC,IAAI,EAAE,CAACC,OAAO,EAAEC,MAAM,EAAEC,MAAM,CAA6E;IAC3GC,OAAO,EAAE,iBAAiB;IAC1BC,SAAS,EAAEC,GAAG,IAAIA,GAAG,KAAK;EAC5B;AACF,CAAC,EAAE,YAAY,CAAC;AAQhB,OAAO,MAAMC,eAA0D,GAAGA,CAACC,KAAK,EAAAC,IAAA,KAAgB;EAAA,IAAd;IAAEC;EAAM,CAAC,GAAAD,IAAA;EACzF,MAAM;IAAEV,UAAU;IAAEY,QAAQ;IAAEC,KAAK;IAAE,GAAGC;EAAK,CAAC,GAAGL,KAAK;EAEtD,MAAM;IACJM,SAAS,GAAGF,KAAK,GAAGhB,eAAe,GAAGD,UAAU;IAChD,GAAGoB;EACL,CAAC,GAAG,OAAOhB,UAAU,KAAK,QAAQ,GAAGA,UAAU,GAAG,CAAC,CAAC;EAEpD,OAAON,CAAC,CACNqB,SAAS,EACTpB,UAAU,CACR,OAAOK,UAAU,KAAK,QAAQ,GAC1B;IAAEiB,IAAI,EAAEL,QAAQ,GAAG,EAAE,GAAGZ;EAAW,CAAC,GACpCgB,WAAkB,EACtB,OAAOhB,UAAU,KAAK,QAAQ,GAC1B,CAAC,CAAC,GACF;IAAEY,QAAQ;IAAEC;EAAM,CAAC,EACvBC,IACF,CAAC,EACDH,KACF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"transition.mjs","names":["h","mergeProps","Transition","TransitionGroup","propsFactory","makeTransitionProps","transition","type","Boolean","String","Object","default","validator","val","MaybeTransition","props","_ref","slots","disabled","group","rest","component","customProps","name","fromEntries","entries","filter","_ref2","_","v","undefined"],"sources":["../../src/composables/transition.ts"],"sourcesContent":["// Utilities\nimport { h, mergeProps, Transition, TransitionGroup } from 'vue'\nimport { propsFactory } from '@/util'\n\n// Types\nimport type { Component, FunctionalComponent, PropType, TransitionProps } from 'vue'\n\nexport const makeTransitionProps = propsFactory({\n transition: {\n type: [Boolean, String, Object] as PropType<string | boolean | TransitionProps & { component?: Component }>,\n default: 'fade-transition',\n validator: val => val !== true,\n },\n}, 'transition')\n\ninterface MaybeTransitionProps extends TransitionProps {\n transition?: string | boolean | TransitionProps & { component?: any }\n disabled?: boolean\n group?: boolean\n}\n\nexport const MaybeTransition: FunctionalComponent<MaybeTransitionProps> = (props, { slots }) => {\n const { transition, disabled, group, ...rest } = props\n\n const {\n component = group ? TransitionGroup : Transition,\n ...customProps\n } = typeof transition === 'object' ? transition : {}\n\n return h(\n component,\n mergeProps(\n typeof transition === 'string'\n ? { name: disabled ? '' : transition }\n : customProps as any,\n typeof transition === 'string'\n ? {}\n : Object.fromEntries(Object.entries({ disabled, group }).filter(([_, v]) => v !== undefined)),\n rest as any,\n ),\n slots\n )\n}\n"],"mappings":"AAAA;AACA,SAASA,CAAC,EAAEC,UAAU,EAAEC,UAAU,EAAEC,eAAe,QAAQ,KAAK;AAAA,SACvDC,YAAY,6BAErB;AAGA,OAAO,MAAMC,mBAAmB,GAAGD,YAAY,CAAC;EAC9CE,UAAU,EAAE;IACVC,IAAI,EAAE,CAACC,OAAO,EAAEC,MAAM,EAAEC,MAAM,CAA6E;IAC3GC,OAAO,EAAE,iBAAiB;IAC1BC,SAAS,EAAEC,GAAG,IAAIA,GAAG,KAAK;EAC5B;AACF,CAAC,EAAE,YAAY,CAAC;AAQhB,OAAO,MAAMC,eAA0D,GAAGA,CAACC,KAAK,EAAAC,IAAA,KAAgB;EAAA,IAAd;IAAEC;EAAM,CAAC,GAAAD,IAAA;EACzF,MAAM;IAAEV,UAAU;IAAEY,QAAQ;IAAEC,KAAK;IAAE,GAAGC;EAAK,CAAC,GAAGL,KAAK;EAEtD,MAAM;IACJM,SAAS,GAAGF,KAAK,GAAGhB,eAAe,GAAGD,UAAU;IAChD,GAAGoB;EACL,CAAC,GAAG,OAAOhB,UAAU,KAAK,QAAQ,GAAGA,UAAU,GAAG,CAAC,CAAC;EAEpD,OAAON,CAAC,CACNqB,SAAS,EACTpB,UAAU,CACR,OAAOK,UAAU,KAAK,QAAQ,GAC1B;IAAEiB,IAAI,EAAEL,QAAQ,GAAG,EAAE,GAAGZ;EAAW,CAAC,GACpCgB,WAAkB,EACtB,OAAOhB,UAAU,KAAK,QAAQ,GAC1B,CAAC,CAAC,GACFI,MAAM,CAACc,WAAW,CAACd,MAAM,CAACe,OAAO,CAAC;IAAEP,QAAQ;IAAEC;EAAM,CAAC,CAAC,CAACO,MAAM,CAACC,KAAA;IAAA,IAAC,CAACC,CAAC,EAAEC,CAAC,CAAC,GAAAF,KAAA;IAAA,OAAKE,CAAC,KAAKC,SAAS;EAAA,EAAC,CAAC,EAC/FV,IACF,CAAC,EACDH,KACF,CAAC;AACH,CAAC"}
@@ -115,14 +115,15 @@ export function useValidation(props) {
115
115
  watch([isValid, errorMessages], () => {
116
116
  form?.update(uid.value, isValid.value, errorMessages.value);
117
117
  });
118
- function reset() {
118
+ async function reset() {
119
119
  model.value = null;
120
- nextTick(resetValidation);
120
+ await nextTick();
121
+ await resetValidation();
121
122
  }
122
- function resetValidation() {
123
+ async function resetValidation() {
123
124
  isPristine.value = true;
124
125
  if (!validateOn.value.lazy) {
125
- validate(true);
126
+ await validate(true);
126
127
  } else {
127
128
  internalErrorMessages.value = [];
128
129
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validation.mjs","names":["makeFocusProps","useForm","useProxiedModel","useToggleScope","computed","nextTick","onBeforeMount","onBeforeUnmount","onMounted","ref","shallowRef","unref","watch","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","isDisabled","isReadonly","concat","slice","Math","max","set","Set","split","blur","has","input","submit","lazy","isValid","isValidating","validationClasses","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 { 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'\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?: ValidateOnValue | `${ValidateOnValue} lazy` | `lazy ${ValidateOnValue}` | 'lazy'\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()\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 isDisabled = computed(() => !!(props.disabled ?? form?.isDisabled.value))\n const isReadonly = computed(() => !!(props.readonly ?? form?.isReadonly.value))\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 const set = new Set(value?.split(' ') ?? [])\n\n return {\n blur: set.has('blur') || set.has('input'),\n input: set.has('input'),\n submit: set.has('submit'),\n lazy: set.has('lazy'),\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`]: isDisabled.value,\n [`${name}--readonly`]: isReadonly.value,\n }\n })\n\n const uid = computed(() => props.name ?? unref(id))\n\n onBeforeMount(() => {\n form?.register({\n id: uid.value,\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(true)\n }\n form?.update(uid.value, isValid.value, errorMessages.value)\n })\n\n useToggleScope(() => validateOn.value.input, () => {\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 function reset () {\n model.value = null\n nextTick(resetValidation)\n }\n\n function resetValidation () {\n isPristine.value = true\n if (!validateOn.value.lazy) {\n validate(true)\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,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses,\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"validation.mjs","names":["makeFocusProps","useForm","useProxiedModel","useToggleScope","computed","nextTick","onBeforeMount","onBeforeUnmount","onMounted","ref","shallowRef","unref","watch","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","isDisabled","isReadonly","concat","slice","Math","max","set","Set","split","blur","has","input","submit","lazy","isValid","isValidating","validationClasses","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 { 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'\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?: ValidateOnValue | `${ValidateOnValue} lazy` | `lazy ${ValidateOnValue}` | 'lazy'\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()\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 isDisabled = computed(() => !!(props.disabled ?? form?.isDisabled.value))\n const isReadonly = computed(() => !!(props.readonly ?? form?.isReadonly.value))\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 const set = new Set(value?.split(' ') ?? [])\n\n return {\n blur: set.has('blur') || set.has('input'),\n input: set.has('input'),\n submit: set.has('submit'),\n lazy: set.has('lazy'),\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`]: isDisabled.value,\n [`${name}--readonly`]: isReadonly.value,\n }\n })\n\n const uid = computed(() => props.name ?? unref(id))\n\n onBeforeMount(() => {\n form?.register({\n id: uid.value,\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(true)\n }\n form?.update(uid.value, isValid.value, errorMessages.value)\n })\n\n useToggleScope(() => validateOn.value.input, () => {\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(true)\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,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses,\n }\n}\n"],"mappings":"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"}
@@ -16,7 +16,7 @@ export const createVuetify = function () {
16
16
  ...options
17
17
  });
18
18
  };
19
- export const version = "3.5.10";
19
+ export const version = "3.5.12";
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.5.10";
100
+ export const version = "3.5.12";
101
101
  createVuetify.version = version;
102
102
 
103
103
  // Vue's inject() can only be used in setup
package/lib/index.d.mts CHANGED
@@ -518,40 +518,47 @@ declare module '@vue/runtime-core' {
518
518
 
519
519
  export interface GlobalComponents {
520
520
  VApp: typeof import('vuetify/components')['VApp']
521
+ VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
521
522
  VAppBar: typeof import('vuetify/components')['VAppBar']
522
523
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
523
524
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
524
- VBadge: typeof import('vuetify/components')['VBadge']
525
- VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
526
- VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
527
525
  VAvatar: typeof import('vuetify/components')['VAvatar']
528
526
  VAlert: typeof import('vuetify/components')['VAlert']
529
527
  VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
528
+ VBadge: typeof import('vuetify/components')['VBadge']
530
529
  VBanner: typeof import('vuetify/components')['VBanner']
531
530
  VBannerActions: typeof import('vuetify/components')['VBannerActions']
532
531
  VBannerText: typeof import('vuetify/components')['VBannerText']
533
- VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
534
- VBtn: typeof import('vuetify/components')['VBtn']
535
532
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
536
533
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
537
534
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
538
- VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
539
- VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
535
+ VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
536
+ VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
540
537
  VCard: typeof import('vuetify/components')['VCard']
541
538
  VCardActions: typeof import('vuetify/components')['VCardActions']
542
539
  VCardItem: typeof import('vuetify/components')['VCardItem']
543
540
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
544
541
  VCardText: typeof import('vuetify/components')['VCardText']
545
542
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
543
+ VBtn: typeof import('vuetify/components')['VBtn']
546
544
  VCarousel: typeof import('vuetify/components')['VCarousel']
547
545
  VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
546
+ VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
547
+ VChip: typeof import('vuetify/components')['VChip']
548
+ VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
548
549
  VCheckbox: typeof import('vuetify/components')['VCheckbox']
549
550
  VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
550
551
  VCode: typeof import('vuetify/components')['VCode']
551
- VChip: typeof import('vuetify/components')['VChip']
552
552
  VColorPicker: typeof import('vuetify/components')['VColorPicker']
553
- VCounter: typeof import('vuetify/components')['VCounter']
554
553
  VChipGroup: typeof import('vuetify/components')['VChipGroup']
554
+ VCounter: typeof import('vuetify/components')['VCounter']
555
+ VDatePicker: typeof import('vuetify/components')['VDatePicker']
556
+ VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
557
+ VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
558
+ VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
559
+ VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
560
+ VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
561
+ VCombobox: typeof import('vuetify/components')['VCombobox']
555
562
  VDataTable: typeof import('vuetify/components')['VDataTable']
556
563
  VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
557
564
  VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
@@ -559,27 +566,17 @@ declare module '@vue/runtime-core' {
559
566
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
560
567
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
561
568
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
562
- VCombobox: typeof import('vuetify/components')['VCombobox']
563
- VDatePicker: typeof import('vuetify/components')['VDatePicker']
564
- VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
565
- VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
566
- VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
567
- VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
568
- VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
569
+ VDivider: typeof import('vuetify/components')['VDivider']
569
570
  VDialog: typeof import('vuetify/components')['VDialog']
570
571
  VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
571
572
  VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
572
573
  VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
573
574
  VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
574
- VDivider: typeof import('vuetify/components')['VDivider']
575
575
  VField: typeof import('vuetify/components')['VField']
576
576
  VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
577
577
  VFileInput: typeof import('vuetify/components')['VFileInput']
578
578
  VFooter: typeof import('vuetify/components')['VFooter']
579
- VImg: typeof import('vuetify/components')['VImg']
580
579
  VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
581
- VItemGroup: typeof import('vuetify/components')['VItemGroup']
582
- VItem: typeof import('vuetify/components')['VItem']
583
580
  VIcon: typeof import('vuetify/components')['VIcon']
584
581
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
585
582
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
@@ -587,7 +584,10 @@ declare module '@vue/runtime-core' {
587
584
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
588
585
  VInput: typeof import('vuetify/components')['VInput']
589
586
  VKbd: typeof import('vuetify/components')['VKbd']
587
+ VItemGroup: typeof import('vuetify/components')['VItemGroup']
588
+ VItem: typeof import('vuetify/components')['VItem']
590
589
  VLabel: typeof import('vuetify/components')['VLabel']
590
+ VImg: typeof import('vuetify/components')['VImg']
591
591
  VList: typeof import('vuetify/components')['VList']
592
592
  VListGroup: typeof import('vuetify/components')['VListGroup']
593
593
  VListImg: typeof import('vuetify/components')['VListImg']
@@ -597,47 +597,47 @@ declare module '@vue/runtime-core' {
597
597
  VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
598
598
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
599
599
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
600
- VMenu: typeof import('vuetify/components')['VMenu']
601
600
  VMain: typeof import('vuetify/components')['VMain']
602
601
  VMessages: typeof import('vuetify/components')['VMessages']
603
- VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
602
+ VMenu: typeof import('vuetify/components')['VMenu']
604
603
  VOtpInput: typeof import('vuetify/components')['VOtpInput']
605
- VOverlay: typeof import('vuetify/components')['VOverlay']
606
604
  VPagination: typeof import('vuetify/components')['VPagination']
605
+ VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
607
606
  VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
608
607
  VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
609
- VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
608
+ VOverlay: typeof import('vuetify/components')['VOverlay']
610
609
  VRating: typeof import('vuetify/components')['VRating']
610
+ VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
611
611
  VSelect: typeof import('vuetify/components')['VSelect']
612
612
  VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
613
+ VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
613
614
  VSheet: typeof import('vuetify/components')['VSheet']
614
615
  VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
615
- VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
616
+ VSlider: typeof import('vuetify/components')['VSlider']
617
+ VSwitch: typeof import('vuetify/components')['VSwitch']
616
618
  VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
617
619
  VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
618
- VSlider: typeof import('vuetify/components')['VSlider']
619
- VSystemBar: typeof import('vuetify/components')['VSystemBar']
620
- VSnackbar: typeof import('vuetify/components')['VSnackbar']
621
620
  VStepper: typeof import('vuetify/components')['VStepper']
622
621
  VStepperActions: typeof import('vuetify/components')['VStepperActions']
623
622
  VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
624
623
  VStepperItem: typeof import('vuetify/components')['VStepperItem']
625
624
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
626
625
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
627
- VTable: typeof import('vuetify/components')['VTable']
628
- VSwitch: typeof import('vuetify/components')['VSwitch']
629
626
  VTabs: typeof import('vuetify/components')['VTabs']
630
627
  VTab: typeof import('vuetify/components')['VTab']
628
+ VSnackbar: typeof import('vuetify/components')['VSnackbar']
629
+ VTextField: typeof import('vuetify/components')['VTextField']
630
+ VSystemBar: typeof import('vuetify/components')['VSystemBar']
631
631
  VTextarea: typeof import('vuetify/components')['VTextarea']
632
+ VTooltip: typeof import('vuetify/components')['VTooltip']
633
+ VTable: typeof import('vuetify/components')['VTable']
634
+ VTimeline: typeof import('vuetify/components')['VTimeline']
635
+ VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
632
636
  VToolbar: typeof import('vuetify/components')['VToolbar']
633
637
  VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
634
638
  VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
635
- VTextField: typeof import('vuetify/components')['VTextField']
636
- VTimeline: typeof import('vuetify/components')['VTimeline']
637
- VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
638
639
  VWindow: typeof import('vuetify/components')['VWindow']
639
640
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
640
- VTooltip: typeof import('vuetify/components')['VTooltip']
641
641
  VDataIterator: typeof import('vuetify/components')['VDataIterator']
642
642
  VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
643
643
  VForm: typeof import('vuetify/components')['VForm']
@@ -655,8 +655,8 @@ declare module '@vue/runtime-core' {
655
655
  VRadio: typeof import('vuetify/components')['VRadio']
656
656
  VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
657
657
  VResponsive: typeof import('vuetify/components')['VResponsive']
658
- VValidation: typeof import('vuetify/components')['VValidation']
659
658
  VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
659
+ VValidation: typeof import('vuetify/components')['VValidation']
660
660
  VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
661
661
  VFabTransition: typeof import('vuetify/components')['VFabTransition']
662
662
  VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
@@ -680,16 +680,19 @@ declare module '@vue/runtime-core' {
680
680
  VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
681
681
  VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
682
682
  VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
683
- VEmptyState: typeof import('vuetify/labs/components')['VEmptyState']
684
- VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
685
683
  VFab: typeof import('vuetify/labs/components')['VFab']
684
+ VEmptyState: typeof import('vuetify/labs/components')['VEmptyState']
686
685
  VPicker: typeof import('vuetify/labs/components')['VPicker']
687
686
  VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
687
+ VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
688
+ VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
689
+ VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
690
+ VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
688
691
  VConfirmEdit: typeof import('vuetify/labs/components')['VConfirmEdit']
689
692
  VSparkline: typeof import('vuetify/labs/components')['VSparkline']
693
+ VSpeedDial: typeof import('vuetify/labs/components')['VSpeedDial']
690
694
  VTreeview: typeof import('vuetify/labs/components')['VTreeview']
691
695
  VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
692
696
  VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
693
- VSpeedDial: typeof import('vuetify/labs/components')['VSpeedDial']
694
697
  }
695
698
  }
@@ -1,4 +1,4 @@
1
- import { Fragment as _Fragment, mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
1
+ import { Fragment as _Fragment, withDirectives as _withDirectives, mergeProps as _mergeProps, vModelText as _vModelText, createVNode as _createVNode } from "vue";
2
2
  // Styles
3
3
  import "./VNumberInput.css";
4
4
 
@@ -94,7 +94,7 @@ export const VNumberInput = genericComponent()({
94
94
  "flat": true,
95
95
  "key": "decrement-btn",
96
96
  "height": defaultHeight,
97
- "icon": "mdi-chevron-down",
97
+ "icon": "$expand",
98
98
  "rounded": "0",
99
99
  "size": "small",
100
100
  "onClick": onClickDown
@@ -106,7 +106,7 @@ export const VNumberInput = genericComponent()({
106
106
  rounded: '0',
107
107
  height: defaultHeight,
108
108
  size: 'small',
109
- icon: 'mdi-chevron-down'
109
+ icon: '$expand'
110
110
  }
111
111
  }
112
112
  }, {
@@ -117,7 +117,7 @@ export const VNumberInput = genericComponent()({
117
117
  "flat": true,
118
118
  "key": "increment-btn",
119
119
  "height": defaultHeight,
120
- "icon": "mdi-chevron-up",
120
+ "icon": "$collapse",
121
121
  "onClick": onClickUp,
122
122
  "rounded": "0",
123
123
  "size": "small"
@@ -129,7 +129,7 @@ export const VNumberInput = genericComponent()({
129
129
  height: defaultHeight,
130
130
  rounded: '0',
131
131
  size: 'small',
132
- icon: 'mdi-chevron-up'
132
+ icon: '$collapse'
133
133
  }
134
134
  }
135
135
  }, {
@@ -167,17 +167,17 @@ export const VNumberInput = genericComponent()({
167
167
  ...slotProps
168
168
  }
169
169
  } = _ref2;
170
- return _createVNode("input", _mergeProps({
170
+ return _withDirectives(_createVNode("input", _mergeProps({
171
171
  "ref": inputRef,
172
172
  "type": "number",
173
- "value": model.value,
173
+ "onUpdate:modelValue": $event => model.value = $event,
174
174
  "class": fieldClass,
175
175
  "max": props.max,
176
176
  "min": props.min,
177
177
  "step": props.step,
178
178
  "onFocus": onFocus,
179
179
  "onBlur": blur
180
- }, inputAttrs), null);
180
+ }, inputAttrs), null), [[_vModelText, model.value]]);
181
181
  },
182
182
  'append-inner': controlVariant.value === 'split' ? () => _createVNode("div", {
183
183
  "class": "v-number-input__control"
@@ -186,7 +186,7 @@ export const VNumberInput = genericComponent()({
186
186
  }, null), _createVNode(VBtn, {
187
187
  "flat": true,
188
188
  "height": "100%",
189
- "icon": "mdi-plus",
189
+ "icon": "$plus",
190
190
  "tile": true,
191
191
  "onClick": onClickUp
192
192
  }, null)]) : !props.reverse ? () => _createVNode(_Fragment, null, [dividerNode(), controlNode()]) : undefined,
@@ -195,7 +195,7 @@ export const VNumberInput = genericComponent()({
195
195
  }, [_createVNode(VBtn, {
196
196
  "flat": true,
197
197
  "height": "100%",
198
- "icon": "mdi-minus",
198
+ "icon": "$minus",
199
199
  "tile": true,
200
200
  "onClick": onClickDown
201
201
  }, null), _createVNode(VDivider, {