File size: 1,018 Bytes
1813a37 1982de5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
import {ComponentChildren, JSX} from 'preact';
import cn from 'classnames';
import style from "./style.module.scss";
export function Button(props: {
loading?: boolean;
onClick?: () => void;
className?: string;
secondary?: boolean;
disabled?: boolean;
title?: string;
children: ComponentChildren;
}) {
const disabled = props.disabled || props.loading;
const buttonClass = cn(style.btn, {[style.secondary]: props.secondary}, 'button', props.className, {[style.disabled]:disabled});
let spinner: JSX.Element = undefined;
if (props.loading) {
spinner = <span className={style.spinner}/>
}
return (
<button
type="button"
onClick={() => {
if (!disabled) {
props.onClick()
}
}}
className={buttonClass}
disabled={disabled}
title={props.title}
>
{spinner}
{props.children}
</button>
);
} |