mirror of
https://github.com/HoshinoSuzumi/rayine-ui.git
synced 2025-04-18 06:48:51 +08:00
♻️ refactor(button): export defineComponent instead of setup
This commit is contained in:
parent
f68fa2f936
commit
15aa2315ae
@ -1,6 +1,6 @@
|
||||
<script lang="ts" setup>
|
||||
<script lang="ts">
|
||||
import { twJoin, twMerge } from 'tailwind-merge'
|
||||
import { computed, toRef, type PropType } from 'vue'
|
||||
import { computed, defineComponent, toRef, type PropType } from 'vue'
|
||||
import type { DeepPartial, Strategy } from '../../types/utils'
|
||||
import type { ButtonColor, ButtonSize, ButtonVariant } from '../../types/button'
|
||||
import { getNonUndefinedValuesFromObject } from '../../utils'
|
||||
@ -8,7 +8,10 @@ import { nuxtLinkProps } from '../../utils/link'
|
||||
import { button } from '../../ui.config'
|
||||
import { useRayUI } from '#build/imports'
|
||||
|
||||
const props = defineProps({
|
||||
const config = button
|
||||
|
||||
export default defineComponent({
|
||||
props: {
|
||||
...nuxtLinkProps,
|
||||
class: {
|
||||
type: String,
|
||||
@ -44,29 +47,29 @@ const props = defineProps({
|
||||
},
|
||||
size: {
|
||||
type: String as PropType<ButtonSize>,
|
||||
default: () => button.default.size,
|
||||
default: () => config.default.size,
|
||||
},
|
||||
color: {
|
||||
type: String as PropType<ButtonColor>,
|
||||
default: () => button.default.color,
|
||||
default: () => config.default.color,
|
||||
},
|
||||
variant: {
|
||||
type: String as PropType<ButtonVariant>,
|
||||
default: () => button.default.variant,
|
||||
default: () => config.default.variant,
|
||||
},
|
||||
loadingIcon: {
|
||||
type: String,
|
||||
default: () => button.default.loadingIcon,
|
||||
default: () => config.default.loadingIcon,
|
||||
},
|
||||
ui: {
|
||||
type: Object as PropType<DeepPartial<typeof button> & { strategy?: Strategy }>,
|
||||
type: Object as PropType<DeepPartial<typeof config> & { strategy?: Strategy }>,
|
||||
default: () => ({}),
|
||||
},
|
||||
})
|
||||
|
||||
},
|
||||
setup(props) {
|
||||
const extProps = computed(() => getNonUndefinedValuesFromObject(props, nuxtLinkProps))
|
||||
|
||||
const { ui, attrs } = useRayUI('button', toRef(props, 'ui'), button)
|
||||
const { ui, attrs } = useRayUI('button', toRef(props, 'ui'), config)
|
||||
|
||||
const buttonClass = computed(() => {
|
||||
// @ts-ignore
|
||||
@ -81,6 +84,15 @@ const buttonClass = computed(() => {
|
||||
props.block ? ui.value.block : ui.value.inline,
|
||||
), props.class)
|
||||
})
|
||||
|
||||
return {
|
||||
ui,
|
||||
attrs,
|
||||
extProps,
|
||||
buttonClass,
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
Loading…
Reference in New Issue
Block a user