vuetify 3.5.11 → 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 +2339 -2089
- package/dist/vuetify-labs.d.ts +1117 -154
- package/dist/vuetify-labs.esm.js +675 -25
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +675 -25
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +1661 -1652
- package/dist/vuetify.d.ts +321 -192
- package/dist/vuetify.esm.js +33 -19
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +33 -19
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +93 -92
- 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/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 +42 -39
- package/lib/labs/VNumberInput/VNumberInput.mjs +4 -4
- 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,46 @@ 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
525
|
VAvatar: typeof import('vuetify/components')['VAvatar']
|
|
525
526
|
VAlert: typeof import('vuetify/components')['VAlert']
|
|
526
527
|
VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
|
|
527
|
-
VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
|
|
528
528
|
VBadge: typeof import('vuetify/components')['VBadge']
|
|
529
529
|
VBanner: typeof import('vuetify/components')['VBanner']
|
|
530
530
|
VBannerActions: typeof import('vuetify/components')['VBannerActions']
|
|
531
531
|
VBannerText: typeof import('vuetify/components')['VBannerText']
|
|
532
|
-
VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
|
|
533
|
-
VBtn: typeof import('vuetify/components')['VBtn']
|
|
534
532
|
VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
|
|
535
533
|
VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
|
|
536
534
|
VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
|
|
537
|
-
VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
|
|
538
535
|
VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
|
|
539
|
-
|
|
540
|
-
VCarousel: typeof import('vuetify/components')['VCarousel']
|
|
541
|
-
VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
|
|
536
|
+
VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
|
|
542
537
|
VCard: typeof import('vuetify/components')['VCard']
|
|
543
538
|
VCardActions: typeof import('vuetify/components')['VCardActions']
|
|
544
539
|
VCardItem: typeof import('vuetify/components')['VCardItem']
|
|
545
540
|
VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
|
|
546
541
|
VCardText: typeof import('vuetify/components')['VCardText']
|
|
547
542
|
VCardTitle: typeof import('vuetify/components')['VCardTitle']
|
|
543
|
+
VBtn: typeof import('vuetify/components')['VBtn']
|
|
544
|
+
VCarousel: typeof import('vuetify/components')['VCarousel']
|
|
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']
|
|
551
|
+
VCode: typeof import('vuetify/components')['VCode']
|
|
550
552
|
VColorPicker: typeof import('vuetify/components')['VColorPicker']
|
|
551
|
-
VChip: typeof import('vuetify/components')['VChip']
|
|
552
553
|
VChipGroup: typeof import('vuetify/components')['VChipGroup']
|
|
553
554
|
VCounter: typeof import('vuetify/components')['VCounter']
|
|
554
|
-
|
|
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']
|
|
555
561
|
VCombobox: typeof import('vuetify/components')['VCombobox']
|
|
556
562
|
VDataTable: typeof import('vuetify/components')['VDataTable']
|
|
557
563
|
VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
|
|
@@ -560,34 +566,28 @@ declare module '@vue/runtime-core' {
|
|
|
560
566
|
VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
|
|
561
567
|
VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
|
|
562
568
|
VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
|
|
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
|
-
VDialog: typeof import('vuetify/components')['VDialog']
|
|
570
569
|
VDivider: typeof import('vuetify/components')['VDivider']
|
|
571
|
-
|
|
572
|
-
VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
|
|
573
|
-
VFooter: typeof import('vuetify/components')['VFooter']
|
|
570
|
+
VDialog: typeof import('vuetify/components')['VDialog']
|
|
574
571
|
VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
|
|
575
572
|
VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
|
|
576
573
|
VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
|
|
577
574
|
VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
|
|
575
|
+
VField: typeof import('vuetify/components')['VField']
|
|
576
|
+
VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
|
|
578
577
|
VFileInput: typeof import('vuetify/components')['VFileInput']
|
|
579
|
-
|
|
578
|
+
VFooter: typeof import('vuetify/components')['VFooter']
|
|
579
|
+
VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
|
|
580
580
|
VIcon: typeof import('vuetify/components')['VIcon']
|
|
581
581
|
VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
|
|
582
582
|
VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
|
|
583
583
|
VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
|
|
584
584
|
VClassIcon: typeof import('vuetify/components')['VClassIcon']
|
|
585
|
-
VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
|
|
586
585
|
VInput: typeof import('vuetify/components')['VInput']
|
|
586
|
+
VKbd: typeof import('vuetify/components')['VKbd']
|
|
587
587
|
VItemGroup: typeof import('vuetify/components')['VItemGroup']
|
|
588
588
|
VItem: typeof import('vuetify/components')['VItem']
|
|
589
589
|
VLabel: typeof import('vuetify/components')['VLabel']
|
|
590
|
-
|
|
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']
|
|
@@ -599,38 +599,38 @@ declare module '@vue/runtime-core' {
|
|
|
599
599
|
VListSubheader: typeof import('vuetify/components')['VListSubheader']
|
|
600
600
|
VMain: typeof import('vuetify/components')['VMain']
|
|
601
601
|
VMessages: typeof import('vuetify/components')['VMessages']
|
|
602
|
-
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
|
603
602
|
VMenu: typeof import('vuetify/components')['VMenu']
|
|
604
603
|
VOtpInput: typeof import('vuetify/components')['VOtpInput']
|
|
605
|
-
VOverlay: typeof import('vuetify/components')['VOverlay']
|
|
606
|
-
VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
|
|
607
604
|
VPagination: typeof import('vuetify/components')['VPagination']
|
|
605
|
+
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
|
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']
|
|
611
|
-
|
|
610
|
+
VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
|
|
612
611
|
VSelect: typeof import('vuetify/components')['VSelect']
|
|
612
|
+
VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
|
|
613
613
|
VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
|
|
614
614
|
VSheet: typeof import('vuetify/components')['VSheet']
|
|
615
|
+
VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
|
|
616
|
+
VSlider: typeof import('vuetify/components')['VSlider']
|
|
617
|
+
VSwitch: typeof import('vuetify/components')['VSwitch']
|
|
615
618
|
VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
|
|
616
619
|
VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
|
|
617
|
-
VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
|
|
618
620
|
VStepper: typeof import('vuetify/components')['VStepper']
|
|
619
621
|
VStepperActions: typeof import('vuetify/components')['VStepperActions']
|
|
620
622
|
VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
|
|
621
623
|
VStepperItem: typeof import('vuetify/components')['VStepperItem']
|
|
622
624
|
VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
|
|
623
625
|
VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
|
|
624
|
-
|
|
626
|
+
VTabs: typeof import('vuetify/components')['VTabs']
|
|
627
|
+
VTab: typeof import('vuetify/components')['VTab']
|
|
625
628
|
VSnackbar: typeof import('vuetify/components')['VSnackbar']
|
|
629
|
+
VTextField: typeof import('vuetify/components')['VTextField']
|
|
626
630
|
VSystemBar: typeof import('vuetify/components')['VSystemBar']
|
|
627
|
-
VTable: typeof import('vuetify/components')['VTable']
|
|
628
|
-
VSwitch: typeof import('vuetify/components')['VSwitch']
|
|
629
631
|
VTextarea: typeof import('vuetify/components')['VTextarea']
|
|
630
|
-
VTextField: typeof import('vuetify/components')['VTextField']
|
|
631
632
|
VTooltip: typeof import('vuetify/components')['VTooltip']
|
|
632
|
-
|
|
633
|
-
VTab: typeof import('vuetify/components')['VTab']
|
|
633
|
+
VTable: typeof import('vuetify/components')['VTable']
|
|
634
634
|
VTimeline: typeof import('vuetify/components')['VTimeline']
|
|
635
635
|
VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
|
|
636
636
|
VToolbar: typeof import('vuetify/components')['VToolbar']
|
|
@@ -646,10 +646,10 @@ declare module '@vue/runtime-core' {
|
|
|
646
646
|
VRow: typeof import('vuetify/components')['VRow']
|
|
647
647
|
VSpacer: typeof import('vuetify/components')['VSpacer']
|
|
648
648
|
VHover: typeof import('vuetify/components')['VHover']
|
|
649
|
-
VLazy: typeof import('vuetify/components')['VLazy']
|
|
650
|
-
VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
|
|
651
649
|
VLayout: typeof import('vuetify/components')['VLayout']
|
|
652
650
|
VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
|
|
651
|
+
VLazy: typeof import('vuetify/components')['VLazy']
|
|
652
|
+
VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
|
|
653
653
|
VNoSsr: typeof import('vuetify/components')['VNoSsr']
|
|
654
654
|
VParallax: typeof import('vuetify/components')['VParallax']
|
|
655
655
|
VRadio: typeof import('vuetify/components')['VRadio']
|
|
@@ -680,14 +680,17 @@ 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
|
+
VFab: typeof import('vuetify/labs/components')['VFab']
|
|
683
684
|
VEmptyState: typeof import('vuetify/labs/components')['VEmptyState']
|
|
684
|
-
VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
|
|
685
685
|
VPicker: typeof import('vuetify/labs/components')['VPicker']
|
|
686
686
|
VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
|
|
687
|
-
|
|
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
|
-
VSpeedDial: typeof import('vuetify/labs/components')['VSpeedDial']
|
|
690
692
|
VSparkline: typeof import('vuetify/labs/components')['VSparkline']
|
|
693
|
+
VSpeedDial: typeof import('vuetify/labs/components')['VSpeedDial']
|
|
691
694
|
VTreeview: typeof import('vuetify/labs/components')['VTreeview']
|
|
692
695
|
VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
|
|
693
696
|
VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
|
|
@@ -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
|
|
|
@@ -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"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VNumberInput.mjs","names":["VBtn","VDefaultsProvider","VDivider","filterFieldProps","makeVFieldProps","VField","makeVInputProps","VInput","makeFocusProps","useFocus","useProxiedModel","computed","ref","filterInputAttrs","genericComponent","only","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","min","Number","max","step","VNumberInput","name","inheritAttrs","props","modelValue","emits","val","setup","_ref","attrs","emit","slots","model","isFocused","focus","blur","inputRef","onFocus","value","toggleUpDown","increment","arguments","length","undefined","stepUp","stepDown","parseInt","onClickUp","onClickDown","incrementSlotProps","click","decrementSlotProps","fieldProps","rootAttrs","inputAttrs","_","inputProps","filterProps","controlNode","defaultHeight","_createVNode","decrement","flat","rounded","height","size","icon","dividerNode","_mergeProps","reverse","class","style","_ref2","fieldClass","slotProps","_Fragment"],"sources":["../../../src/labs/VNumberInput/VNumberInput.tsx"],"sourcesContent":["// Styles\nimport './VNumberInput.sass'\n\n// Components\nimport { VBtn } from '../../components/VBtn'\nimport { VDefaultsProvider } from '../../components/VDefaultsProvider'\nimport { VDivider } from '../../components/VDivider'\nimport { filterFieldProps, makeVFieldProps, VField } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { filterInputAttrs, genericComponent, only, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\ntype ControlSlot = {\n click: () => void\n}\n\ntype VNumberInputSlots = Omit<VInputSlots & VFieldSlots, 'default'> & {\n increment: ControlSlot\n decrement: ControlSlot\n}\n\ntype ControlVariant = 'default' | 'stacked' | 'split'\n\nconst makeVNumberInputProps = propsFactory({\n controlVariant: {\n type: String as PropType<ControlVariant>,\n default: 'default',\n },\n inset: Boolean,\n hideInput: Boolean,\n min: Number,\n max: Number,\n step: Number,\n\n ...only(makeVInputProps(), [\n 'density',\n 'disabled',\n 'focused',\n 'hideDetails',\n 'hint',\n 'label',\n 'persistentHint',\n 'readonly',\n ]),\n ...only(makeVFieldProps(), [\n 'baseColor',\n 'bgColor',\n 'class',\n 'color',\n 'disabled',\n 'error',\n 'loading',\n 'reverse',\n 'rounded',\n 'style',\n 'theme',\n 'variant',\n ]),\n ...makeFocusProps(),\n}, 'VNumberInput')\n\nexport const VNumberInput = genericComponent<VNumberInputSlots>()({\n name: 'VNumberInput',\n\n inheritAttrs: false,\n\n props: {\n ...makeVNumberInputProps(),\n\n modelValue: {\n type: [Number, String],\n default: 0,\n },\n },\n\n emits: {\n 'update:modelValue': (val: number) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const inputRef = ref<HTMLInputElement>()\n\n function onFocus () {\n if (!isFocused.value) focus()\n }\n\n const controlVariant = computed(() => {\n return props.hideInput ? 'stacked' : props.controlVariant\n })\n\n function toggleUpDown (increment = true) {\n if (increment) {\n inputRef.value?.stepUp()\n } else {\n inputRef.value?.stepDown()\n }\n\n if (inputRef.value) model.value = parseInt(inputRef.value.value, 10)\n }\n\n function onClickUp () {\n toggleUpDown()\n }\n\n function onClickDown () {\n toggleUpDown(false)\n }\n\n const incrementSlotProps = computed(() => ({ click: onClickUp }))\n\n const decrementSlotProps = computed(() => ({ click: onClickDown }))\n\n useRender(() => {\n const fieldProps = filterFieldProps(props)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const { modelValue: _, ...inputProps } = VInput.filterProps(props)\n\n function controlNode () {\n const defaultHeight = controlVariant.value === 'stacked' ? 'auto' : '100%'\n return (\n <div class=\"v-number-input__control\">\n {\n !slots.decrement ? (\n <VBtn\n flat\n key=\"decrement-btn\"\n height={ defaultHeight }\n icon=\"$expand\"\n rounded=\"0\"\n size=\"small\"\n onClick={ onClickDown }\n />\n ) : (\n <VDefaultsProvider\n key=\"decrement-defaults\"\n defaults={{\n VBtn: {\n flat: true,\n rounded: '0',\n height: defaultHeight,\n size: 'small',\n icon: '$expand',\n },\n }}\n >\n { slots.decrement(decrementSlotProps.value) }\n </VDefaultsProvider>\n )\n }\n\n <VDivider\n vertical={ controlVariant.value !== 'stacked' }\n />\n\n {\n !slots.increment ? (\n <VBtn\n flat\n key=\"increment-btn\"\n height={ defaultHeight }\n icon=\"$collapse\"\n onClick={ onClickUp }\n rounded=\"0\"\n size=\"small\"\n />\n ) : (\n <VDefaultsProvider\n key=\"increment-defaults\"\n defaults={{\n VBtn: {\n flat: true,\n height: defaultHeight,\n rounded: '0',\n size: 'small',\n icon: '$collapse',\n },\n }}\n >\n { slots.increment(incrementSlotProps.value) }\n </VDefaultsProvider>\n )\n }\n </div>\n )\n }\n\n function dividerNode () {\n return !props.hideInput && !props.inset ? <VDivider vertical /> : undefined\n }\n\n return (\n <VInput\n class={[\n 'v-number-input',\n {\n 'v-number-input--default': controlVariant.value === 'default',\n 'v-number-input--hide-input': props.hideInput,\n 'v-number-input--inset': props.inset,\n 'v-number-input--reverse': props.reverse,\n 'v-number-input--split': controlVariant.value === 'split',\n 'v-number-input--stacked': controlVariant.value === 'stacked',\n },\n props.class,\n ]}\n { ...rootAttrs }\n { ...inputProps }\n focused={ isFocused.value }\n style={ props.style }\n >\n {{\n ...slots,\n default: () => (\n <VField\n { ...fieldProps }\n active\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <input\n ref={ inputRef }\n type=\"number\"\n value={ model.value }\n class={ fieldClass }\n max={ props.max }\n min={ props.min }\n step={ props.step }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...inputAttrs }\n />\n ),\n 'append-inner': controlVariant.value === 'split' ? () => (\n <div class=\"v-number-input__control\">\n <VDivider vertical />\n\n <VBtn\n flat\n height=\"100%\"\n icon=\"$plus\"\n tile\n onClick={ onClickUp }\n />\n </div>\n ) : (!props.reverse\n ? () => <>{ dividerNode() }{ controlNode() }</>\n : undefined),\n 'prepend-inner': controlVariant.value === 'split' ? () => (\n <div class=\"v-number-input__control\">\n <VBtn\n flat\n height=\"100%\"\n icon=\"$minus\"\n tile\n onClick={ onClickDown }\n />\n\n <VDivider vertical />\n </div>\n ) : (props.reverse\n ? () => <>{ controlNode() }{ dividerNode() }</>\n : undefined),\n }}\n </VField>\n ),\n }}\n </VInput>\n )\n })\n },\n})\n\nexport type VNumberInput = InstanceType<typeof VNumberInput>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VNumberInput.mjs","names":["VBtn","VDefaultsProvider","VDivider","filterFieldProps","makeVFieldProps","VField","makeVInputProps","VInput","makeFocusProps","useFocus","useProxiedModel","computed","ref","filterInputAttrs","genericComponent","only","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","min","Number","max","step","VNumberInput","name","inheritAttrs","props","modelValue","emits","val","setup","_ref","attrs","emit","slots","model","isFocused","focus","blur","inputRef","onFocus","value","toggleUpDown","increment","arguments","length","undefined","stepUp","stepDown","parseInt","onClickUp","onClickDown","incrementSlotProps","click","decrementSlotProps","fieldProps","rootAttrs","inputAttrs","_","inputProps","filterProps","controlNode","defaultHeight","_createVNode","decrement","flat","rounded","height","size","icon","dividerNode","_mergeProps","reverse","class","style","_ref2","fieldClass","slotProps","_withDirectives","$event","_vModelText","_Fragment"],"sources":["../../../src/labs/VNumberInput/VNumberInput.tsx"],"sourcesContent":["// Styles\nimport './VNumberInput.sass'\n\n// Components\nimport { VBtn } from '../../components/VBtn'\nimport { VDefaultsProvider } from '../../components/VDefaultsProvider'\nimport { VDivider } from '../../components/VDivider'\nimport { filterFieldProps, makeVFieldProps, VField } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { filterInputAttrs, genericComponent, only, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\ntype ControlSlot = {\n click: () => void\n}\n\ntype VNumberInputSlots = Omit<VInputSlots & VFieldSlots, 'default'> & {\n increment: ControlSlot\n decrement: ControlSlot\n}\n\ntype ControlVariant = 'default' | 'stacked' | 'split'\n\nconst makeVNumberInputProps = propsFactory({\n controlVariant: {\n type: String as PropType<ControlVariant>,\n default: 'default',\n },\n inset: Boolean,\n hideInput: Boolean,\n min: Number,\n max: Number,\n step: Number,\n\n ...only(makeVInputProps(), [\n 'density',\n 'disabled',\n 'focused',\n 'hideDetails',\n 'hint',\n 'label',\n 'persistentHint',\n 'readonly',\n ]),\n ...only(makeVFieldProps(), [\n 'baseColor',\n 'bgColor',\n 'class',\n 'color',\n 'disabled',\n 'error',\n 'loading',\n 'reverse',\n 'rounded',\n 'style',\n 'theme',\n 'variant',\n ]),\n ...makeFocusProps(),\n}, 'VNumberInput')\n\nexport const VNumberInput = genericComponent<VNumberInputSlots>()({\n name: 'VNumberInput',\n\n inheritAttrs: false,\n\n props: {\n ...makeVNumberInputProps(),\n\n modelValue: {\n type: [Number, String],\n default: 0,\n },\n },\n\n emits: {\n 'update:modelValue': (val: number) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const inputRef = ref<HTMLInputElement>()\n\n function onFocus () {\n if (!isFocused.value) focus()\n }\n\n const controlVariant = computed(() => {\n return props.hideInput ? 'stacked' : props.controlVariant\n })\n\n function toggleUpDown (increment = true) {\n if (increment) {\n inputRef.value?.stepUp()\n } else {\n inputRef.value?.stepDown()\n }\n\n if (inputRef.value) model.value = parseInt(inputRef.value.value, 10)\n }\n\n function onClickUp () {\n toggleUpDown()\n }\n\n function onClickDown () {\n toggleUpDown(false)\n }\n\n const incrementSlotProps = computed(() => ({ click: onClickUp }))\n\n const decrementSlotProps = computed(() => ({ click: onClickDown }))\n\n useRender(() => {\n const fieldProps = filterFieldProps(props)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const { modelValue: _, ...inputProps } = VInput.filterProps(props)\n\n function controlNode () {\n const defaultHeight = controlVariant.value === 'stacked' ? 'auto' : '100%'\n return (\n <div class=\"v-number-input__control\">\n {\n !slots.decrement ? (\n <VBtn\n flat\n key=\"decrement-btn\"\n height={ defaultHeight }\n icon=\"$expand\"\n rounded=\"0\"\n size=\"small\"\n onClick={ onClickDown }\n />\n ) : (\n <VDefaultsProvider\n key=\"decrement-defaults\"\n defaults={{\n VBtn: {\n flat: true,\n rounded: '0',\n height: defaultHeight,\n size: 'small',\n icon: '$expand',\n },\n }}\n >\n { slots.decrement(decrementSlotProps.value) }\n </VDefaultsProvider>\n )\n }\n\n <VDivider\n vertical={ controlVariant.value !== 'stacked' }\n />\n\n {\n !slots.increment ? (\n <VBtn\n flat\n key=\"increment-btn\"\n height={ defaultHeight }\n icon=\"$collapse\"\n onClick={ onClickUp }\n rounded=\"0\"\n size=\"small\"\n />\n ) : (\n <VDefaultsProvider\n key=\"increment-defaults\"\n defaults={{\n VBtn: {\n flat: true,\n height: defaultHeight,\n rounded: '0',\n size: 'small',\n icon: '$collapse',\n },\n }}\n >\n { slots.increment(incrementSlotProps.value) }\n </VDefaultsProvider>\n )\n }\n </div>\n )\n }\n\n function dividerNode () {\n return !props.hideInput && !props.inset ? <VDivider vertical /> : undefined\n }\n\n return (\n <VInput\n class={[\n 'v-number-input',\n {\n 'v-number-input--default': controlVariant.value === 'default',\n 'v-number-input--hide-input': props.hideInput,\n 'v-number-input--inset': props.inset,\n 'v-number-input--reverse': props.reverse,\n 'v-number-input--split': controlVariant.value === 'split',\n 'v-number-input--stacked': controlVariant.value === 'stacked',\n },\n props.class,\n ]}\n { ...rootAttrs }\n { ...inputProps }\n focused={ isFocused.value }\n style={ props.style }\n >\n {{\n ...slots,\n default: () => (\n <VField\n { ...fieldProps }\n active\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <input\n ref={ inputRef }\n type=\"number\"\n v-model={ model.value }\n class={ fieldClass }\n max={ props.max }\n min={ props.min }\n step={ props.step }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...inputAttrs }\n />\n ),\n 'append-inner': controlVariant.value === 'split' ? () => (\n <div class=\"v-number-input__control\">\n <VDivider vertical />\n\n <VBtn\n flat\n height=\"100%\"\n icon=\"$plus\"\n tile\n onClick={ onClickUp }\n />\n </div>\n ) : (!props.reverse\n ? () => <>{ dividerNode() }{ controlNode() }</>\n : undefined),\n 'prepend-inner': controlVariant.value === 'split' ? () => (\n <div class=\"v-number-input__control\">\n <VBtn\n flat\n height=\"100%\"\n icon=\"$minus\"\n tile\n onClick={ onClickDown }\n />\n\n <VDivider vertical />\n </div>\n ) : (props.reverse\n ? () => <>{ controlNode() }{ dividerNode() }</>\n : undefined),\n }}\n </VField>\n ),\n }}\n </VInput>\n )\n })\n },\n})\n\nexport type VNumberInput = InstanceType<typeof VNumberInput>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectingTimes.mjs","names":["SelectingTimes"],"sources":["../../../src/labs/VTimePicker/SelectingTimes.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\nenum SelectingTimes {\n Hour = 1,\n Minute = 2,\n Second = 3\n}\n\nexport { SelectingTimes }\n"],"mappings":"AAAA;AACA;AAAA,IAEKA,cAAc,0BAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA,EAAdA,cAAc;AAMnB,SAASA,cAAc"}
|