ConceptPortal-public/rsconcept/frontend/src/components/Common/SubmitButton.tsx

37 lines
923 B
TypeScript
Raw Normal View History

import clsx from 'clsx';
interface SubmitButtonProps
2023-12-17 20:19:28 +03:00
extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children' | 'title'> {
text?: string
tooltip?: string
loading?: boolean
icon?: React.ReactNode
dimensions?: string
2023-07-15 17:46:19 +03:00
}
function SubmitButton({
2023-12-17 20:19:28 +03:00
text = 'ОК', icon, disabled, tooltip, loading, className,
2023-11-30 02:14:24 +03:00
dimensions = 'w-fit h-fit', ...restProps
}: SubmitButtonProps) {
2023-07-15 17:46:19 +03:00
return (
2023-11-06 02:20:16 +03:00
<button type='submit'
title={tooltip}
className={clsx(
2023-12-17 20:19:28 +03:00
'px-3 py-2 inline-flex items-center gap-2 align-middle justify-center',
'border',
'font-semibold',
'clr-btn-primary',
'select-none disabled:cursor-not-allowed',
loading && 'cursor-progress',
2023-12-17 20:19:28 +03:00
dimensions,
className
)}
2023-11-06 02:20:16 +03:00
disabled={disabled ?? loading}
2023-11-30 02:14:24 +03:00
{...restProps}
2023-11-06 02:20:16 +03:00
>
{icon ? <span>{icon}</span> : null}
{text ? <span>{text}</span> : null}
2023-11-06 02:20:16 +03:00
</button>);
2023-07-15 17:46:19 +03:00
}
export default SubmitButton;