ui: update ClientButton to support function onClick alongside legacy string onClick

This commit is contained in:
2026-06-02 01:07:00 -05:00
parent f4db327d7a
commit 575b485c41

View File

@@ -2,12 +2,22 @@
import { useEffect, useRef } from 'react'
export function ClientButton({ children, onClick, ...props }: { children?: React.ReactNode; onClick?: string } & React.ButtonHTMLAttributes<HTMLButtonElement>) {
export function ClientButton({
children,
onClick,
...props
}: {
children?: React.ReactNode
onClick?: ((event: React.MouseEvent<HTMLButtonElement>) => void) | string
} & React.ButtonHTMLAttributes<HTMLButtonElement>) {
const btnRef = useRef<HTMLButtonElement>(null)
useEffect(() => {
if (typeof onClick === 'string' && btnRef.current) {
if (!btnRef.current) return
if (typeof onClick === 'string') {
btnRef.current.onclick = onClick as any
} else if (typeof onClick === 'function') {
btnRef.current.onclick = (e: Event) => onClick(e as React.MouseEvent<HTMLButtonElement>)
}
}, [onClick])