UNPKG

@pablo-amberflo/ui-kit-test

Version:

Amberflo UI Kit

116 lines (108 loc) 2.86 kB
import React from "react"; import { Button, Typography, Tooltip } from "@mui/material"; import { withStyles } from "@mui/styles"; import { styles } from "./styles"; const ActionButtonRaw = (props) => { const { onClick, text, selectedTabButton, selectedTabButtonStyles, disabled, buttonStyle, iconStyle, classes, icon, submitType, shouldRenderTooltip, tooltipText, variant, } = props; const getClassName = (type) => { switch (type) { case "primary": return classes.primaryButton; case "secondary": return classes.secondaryButton; case "white": if (disabled) { return classes.whiteButtonDisabled; } return classes.whiteButton; case "tab": if (selectedTabButton) { return `${classes.selectedTabButton} ${selectedTabButtonStyles}`; } return classes.tabButton; default: return classes.defaultButton; } }; const getTypoClassName = (type) => { switch (type) { case "primary": return classes.primaryButtonText; case "secondary": if (disabled) { return classes.secondaryButtonTextDisabled; } return classes.secondaryButtonText; case "white": if (disabled) { return classes.whiteButtonTextDisabled; } return classes.whiteButtonText; case "tab": if (selectedTabButton) { return classes.selectedTabButtonTitle; } return classes.tabButtonTitle; case "selectedTabButton": return classes.selectedTabButtonTitle; default: return classes.defaultButtonText; } }; const button = ( <Button disabled={disabled} onClick={onClick} color="primary" variant="contained" type={submitType && "submit"} size="medium" className={ variant && variant !== "" ? getClassName(variant) : buttonStyle } > <div className={classes.container}> {icon && ( <img src={icon} className={`${classes.buttonIcon} ${iconStyle}`} alt="button-icon" /> )} <Typography variant="button" className={getTypoClassName(variant)}> {text} </Typography> </div> </Button> ); /** * the span inside the tooltip is used because of this * https://material-ui.com/components/tooltips/#disabled-elements */ const renderActionButton = () => { if (shouldRenderTooltip) { return ( <Tooltip disableFocusListener arrow title={tooltipText} placement="top"> <span>{button}</span> </Tooltip> ); } return button; }; return renderActionButton(); }; export const ActionButton = withStyles(styles)(ActionButtonRaw);