import { computed, defineComponent, toRefs } from "vue"
import buttonTypes from "./buttonTypes"
import { useLocaleReceive } from "../config-provider"
import useConfigInject from "../_hooks/useConfigInject"
import { componentNamePrefix } from "../_constants/root"
export default defineComponent({
name: componentNamePrefix + "Button",
props: buttonTypes(),
emits: ["click"],
setup(props, { attrs, emit }) {
// 多语言注入
const locale = useLocaleReceive("Button")
const handleClick = (ev: Event) => {
if (attrs.disabled) {
ev.preventDefault()
return
}
emit("click", ev)
}
const { prefixCls } = useConfigInject()
const { type } = toRefs(props)
const classes = computed(() => {
const pre = prefixCls.value
return [`${pre}-btn-container`, `${pre}-btn-${type.value||'default'}`,attrs.class]
})
const btnProps = {
...attrs,
class: classes.value,
onClick: handleClick,
}
return {
btnProps,
locale,
type
}
},
render() {
const { locale, btnProps, $slots, type } = this
const child = $slots.default?.()
return (
type === 'confirm'?
:
)
},
})