From 02d72df52715fb48632657b0576a7653a6308abc Mon Sep 17 00:00:00 2001 From: Benjamin Canac Date: Thu, 11 Jan 2024 11:25:00 +0100 Subject: [PATCH] chore(Button): use utils to get link props --- src/runtime/components/elements/Button.vue | 11 +++-------- src/runtime/utils/nuxt-link.ts | 12 +++++++++++- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/runtime/components/elements/Button.vue b/src/runtime/components/elements/Button.vue index 530728dc..1658f216 100644 --- a/src/runtime/components/elements/Button.vue +++ b/src/runtime/components/elements/Button.vue @@ -23,8 +23,8 @@ import { twMerge, twJoin } from 'tailwind-merge' import UIcon from '../elements/Icon.vue' import ULink from '../elements/Link.vue' import { useUI } from '../../composables/useUI' -import { mergeConfig, omit } from '../../utils' -import { nuxtLinkProps } from '../../utils/nuxt-link' +import { mergeConfig } from '../../utils' +import { nuxtLinkProps, getNuxtLinkProps } from '../../utils/nuxt-link' import { useInjectButtonGroup } from '../../composables/useButtonGroup' import type { ButtonColor, ButtonSize, ButtonVariant, Strategy } from '../../types' // @ts-expect-error @@ -192,12 +192,7 @@ export default defineComponent({ ) }) - const linkProps = computed(() => { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { type, block, label, loading, disabled, padded, size, color, variant, icon, loadingIcon, leadingIcon, trailingIcon, trailing, leading, square, truncate, class: className, ui, ...rest } = props - - return rest - }) + const linkProps = computed(() => getNuxtLinkProps(props)) return { // eslint-disable-next-line vue/no-dupe-keys diff --git a/src/runtime/utils/nuxt-link.ts b/src/runtime/utils/nuxt-link.ts index b46d5373..256de692 100644 --- a/src/runtime/utils/nuxt-link.ts +++ b/src/runtime/utils/nuxt-link.ts @@ -1,5 +1,5 @@ import type { PropType } from 'vue' -import type { RouteLocationRaw } from '#vue-router' +import type { RouteLocationRaw } from 'vue-router' export const nuxtLinkProps = { to: { @@ -60,3 +60,13 @@ export const nuxtLinkProps = { default: undefined } } as const + +export const getNuxtLinkProps = (props: Record) => { + const nuxtLinkPropsKeys = Object.keys(nuxtLinkProps) + return nuxtLinkPropsKeys.reduce((acc, key) => { + if (props[key] !== undefined) { + acc[key] = props[key] + } + return acc + }, {} as Record) +}