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.
- package/dist/_component-variables-labs.sass +2 -1
- package/dist/json/attributes.json +243 -19
- package/dist/json/importMap-labs.json +22 -10
- package/dist/json/importMap.json +124 -124
- package/dist/json/tags.json +71 -0
- package/dist/json/web-types.json +747 -38
- package/dist/vuetify-labs.css +2467 -2217
- package/dist/vuetify-labs.d.ts +1117 -154
- package/dist/vuetify-labs.esm.js +683 -33
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +683 -33
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +415 -406
- package/dist/vuetify.d.ts +320 -191
- package/dist/vuetify.esm.js +35 -21
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +35 -21
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +95 -94
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAvatar/VAvatar.css +6 -0
- package/lib/components/VAvatar/VAvatar.sass +6 -0
- package/lib/components/VAvatar/_variables.scss +2 -0
- package/lib/components/VCheckbox/index.d.mts +54 -18
- package/lib/components/VChip/VChip.css +5 -2
- package/lib/components/VChip/VChip.sass +3 -0
- package/lib/components/VChip/_variables.scss +2 -2
- package/lib/components/VDivider/VDivider.css +1 -1
- package/lib/components/VDivider/VDivider.sass +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanel.css +3 -3
- package/lib/components/VExpansionPanel/VExpansionPanel.sass +2 -2
- package/lib/components/VField/VField.css +1 -1
- package/lib/components/VField/_variables.scss +1 -1
- package/lib/components/VFileInput/index.d.mts +12 -12
- package/lib/components/VForm/index.d.mts +42 -42
- package/lib/components/VInput/index.d.mts +6 -6
- package/lib/components/VOtpInput/VOtpInput.mjs +2 -2
- package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
- package/lib/components/VRadio/index.d.mts +27 -9
- package/lib/components/VRadioGroup/index.d.mts +27 -9
- package/lib/components/VSelectionControl/VSelectionControl.mjs +1 -0
- package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
- package/lib/components/VSelectionControl/index.d.mts +27 -9
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +1 -1
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
- package/lib/components/VSelectionControlGroup/index.d.mts +27 -9
- package/lib/components/VSwitch/index.d.mts +27 -9
- package/lib/components/VTextField/index.d.mts +12 -12
- package/lib/components/VTextarea/index.d.mts +12 -12
- package/lib/components/VValidation/index.d.mts +6 -6
- package/lib/components/index.d.mts +279 -153
- package/lib/composables/form.mjs.map +1 -1
- package/lib/composables/router.mjs +16 -8
- package/lib/composables/router.mjs.map +1 -1
- package/lib/composables/transition.mjs +5 -2
- package/lib/composables/transition.mjs.map +1 -1
- package/lib/composables/validation.mjs +5 -4
- package/lib/composables/validation.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.mts +41 -38
- package/lib/labs/VNumberInput/VNumberInput.mjs +10 -10
- package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
- package/lib/labs/VTimePicker/SelectingTimes.mjs.map +1 -0
- package/lib/labs/VTimePicker/VTimePicker.css +8 -0
- package/lib/labs/VTimePicker/VTimePicker.mjs +265 -0
- package/lib/labs/VTimePicker/VTimePicker.mjs.map +1 -0
- package/lib/labs/VTimePicker/VTimePicker.sass +10 -0
- package/lib/labs/VTimePicker/VTimePickerClock.css +130 -0
- package/lib/labs/VTimePicker/VTimePickerClock.mjs +244 -0
- package/lib/labs/VTimePicker/VTimePickerClock.mjs.map +1 -0
- package/lib/{components → labs}/VTimePicker/VTimePickerClock.sass +22 -39
- package/lib/labs/VTimePicker/VTimePickerControls.css +104 -0
- package/lib/labs/VTimePicker/VTimePickerControls.mjs +125 -0
- package/lib/labs/VTimePicker/VTimePickerControls.mjs.map +1 -0
- package/lib/labs/VTimePicker/VTimePickerControls.sass +102 -0
- package/lib/labs/VTimePicker/_variables.scss +34 -0
- package/lib/labs/VTimePicker/index.d.mts +848 -0
- package/lib/labs/VTimePicker/index.mjs +4 -0
- package/lib/labs/VTimePicker/index.mjs.map +1 -0
- package/lib/labs/components.d.mts +835 -1
- package/lib/labs/components.mjs +1 -0
- package/lib/labs/components.mjs.map +1 -1
- package/lib/locale/af.mjs +2 -1
- package/lib/locale/af.mjs.map +1 -1
- package/lib/locale/ar.mjs +2 -1
- package/lib/locale/ar.mjs.map +1 -1
- package/lib/locale/az.mjs +2 -1
- package/lib/locale/az.mjs.map +1 -1
- package/lib/locale/bg.mjs +2 -1
- package/lib/locale/bg.mjs.map +1 -1
- package/lib/locale/ca.mjs +2 -1
- package/lib/locale/ca.mjs.map +1 -1
- package/lib/locale/ckb.mjs +2 -1
- package/lib/locale/ckb.mjs.map +1 -1
- package/lib/locale/cs.mjs +2 -1
- package/lib/locale/cs.mjs.map +1 -1
- package/lib/locale/da.mjs +2 -1
- package/lib/locale/da.mjs.map +1 -1
- package/lib/locale/de.mjs +2 -1
- package/lib/locale/de.mjs.map +1 -1
- package/lib/locale/el.mjs +2 -1
- package/lib/locale/el.mjs.map +1 -1
- package/lib/locale/en.mjs +2 -1
- package/lib/locale/en.mjs.map +1 -1
- package/lib/locale/es.mjs +2 -1
- package/lib/locale/es.mjs.map +1 -1
- package/lib/locale/et.mjs +2 -1
- package/lib/locale/et.mjs.map +1 -1
- package/lib/locale/fa.mjs +2 -1
- package/lib/locale/fa.mjs.map +1 -1
- package/lib/locale/fi.mjs +2 -1
- package/lib/locale/fi.mjs.map +1 -1
- package/lib/locale/fr.mjs +2 -1
- package/lib/locale/fr.mjs.map +1 -1
- package/lib/locale/he.mjs +2 -1
- package/lib/locale/he.mjs.map +1 -1
- package/lib/locale/hr.mjs +2 -1
- package/lib/locale/hr.mjs.map +1 -1
- package/lib/locale/hu.mjs +2 -1
- package/lib/locale/hu.mjs.map +1 -1
- package/lib/locale/id.mjs +2 -1
- package/lib/locale/id.mjs.map +1 -1
- package/lib/locale/index.d.mts +43 -0
- package/lib/locale/it.mjs +2 -1
- package/lib/locale/it.mjs.map +1 -1
- package/lib/locale/ja.mjs +2 -1
- package/lib/locale/ja.mjs.map +1 -1
- package/lib/locale/km.mjs +2 -1
- package/lib/locale/km.mjs.map +1 -1
- package/lib/locale/ko.mjs +2 -1
- package/lib/locale/ko.mjs.map +1 -1
- package/lib/locale/lt.mjs +2 -1
- package/lib/locale/lt.mjs.map +1 -1
- package/lib/locale/lv.mjs +2 -1
- package/lib/locale/lv.mjs.map +1 -1
- package/lib/locale/nl.mjs +2 -1
- package/lib/locale/nl.mjs.map +1 -1
- package/lib/locale/no.mjs +2 -1
- package/lib/locale/no.mjs.map +1 -1
- package/lib/locale/pl.mjs +2 -1
- package/lib/locale/pl.mjs.map +1 -1
- package/lib/locale/pt.mjs +2 -1
- package/lib/locale/pt.mjs.map +1 -1
- package/lib/locale/ro.mjs +2 -1
- package/lib/locale/ro.mjs.map +1 -1
- package/lib/locale/ru.mjs +2 -1
- package/lib/locale/ru.mjs.map +1 -1
- package/lib/locale/sk.mjs +2 -1
- package/lib/locale/sk.mjs.map +1 -1
- package/lib/locale/sl.mjs +2 -1
- package/lib/locale/sl.mjs.map +1 -1
- package/lib/locale/sr-Cyrl.mjs +2 -1
- package/lib/locale/sr-Cyrl.mjs.map +1 -1
- package/lib/locale/sr-Latn.mjs +2 -1
- package/lib/locale/sr-Latn.mjs.map +1 -1
- package/lib/locale/sv.mjs +2 -1
- package/lib/locale/sv.mjs.map +1 -1
- package/lib/locale/th.mjs +2 -1
- package/lib/locale/th.mjs.map +1 -1
- package/lib/locale/tr.mjs +2 -1
- package/lib/locale/tr.mjs.map +1 -1
- package/lib/locale/uk.mjs +2 -1
- package/lib/locale/uk.mjs.map +1 -1
- package/lib/locale/vi.mjs +2 -1
- package/lib/locale/vi.mjs.map +1 -1
- package/lib/locale/zh-Hans.mjs +2 -1
- package/lib/locale/zh-Hans.mjs.map +1 -1
- package/lib/locale/zh-Hant.mjs +2 -1
- package/lib/locale/zh-Hant.mjs.map +1 -1
- package/package.json +4 -4
- package/lib/components/VTimePicker/SelectingTimes.mjs.map +0 -1
- package/lib/components/VTimePicker/VTimePicker.mjs +0 -288
- package/lib/components/VTimePicker/VTimePicker.mjs.map +0 -1
- package/lib/components/VTimePicker/VTimePickerClock.mjs +0 -251
- package/lib/components/VTimePicker/VTimePickerClock.mjs.map +0 -1
- package/lib/components/VTimePicker/VTimePickerTitle.mjs +0 -64
- package/lib/components/VTimePicker/VTimePickerTitle.mjs.map +0 -1
- package/lib/components/VTimePicker/VTimePickerTitle.sass +0 -61
- package/lib/components/VTimePicker/_variables.scss +0 -32
- package/lib/components/VTimePicker/index.mjs +0 -12
- package/lib/components/VTimePicker/index.mjs.map +0 -1
- /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
|
|
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
|
-
|
|
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:
|
|
32
|
-
if (!
|
|
33
|
-
if (!
|
|
34
|
-
|
|
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
|
|
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
|
-
}
|
|
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,
|
|
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(
|
|
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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"}
|
package/lib/entry-bundler.mjs
CHANGED
|
@@ -16,7 +16,7 @@ export const createVuetify = function () {
|
|
|
16
16
|
...options
|
|
17
17
|
});
|
|
18
18
|
};
|
|
19
|
-
export const version = "3.5.
|
|
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
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
|
-
|
|
539
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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": "
|
|
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: '
|
|
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": "
|
|
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: '
|
|
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
|
-
"
|
|
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": "
|
|
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": "
|
|
198
|
+
"icon": "$minus",
|
|
199
199
|
"tile": true,
|
|
200
200
|
"onClick": onClickDown
|
|
201
201
|
}, null), _createVNode(VDivider, {
|