index.tsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import React, { ReactElement } from 'react';
  2. import Icon from 'components/Icon';
  3. import IconButton from '@material/react-icon-button';
  4. import classnames from 'classnames';
  5. import '@material/react-button/dist/button.css';
  6. import '@material/react-icon-button/dist/icon-button.css'
  7. import './styles.scss';
  8. type CBKButtonProps = {
  9. children?: string|ReactElement,
  10. className?: string,
  11. unelevated?: boolean,
  12. raised?: boolean,
  13. outlined?: boolean,
  14. icon?: string,
  15. onClick?: (e: any) => void,
  16. small?: boolean,
  17. type?: 'button' | 'submit' | 'reset';
  18. disabled?: boolean
  19. style?: any;
  20. }
  21. export default function CBKButton(props: CBKButtonProps) {
  22. const btnClassNames = classnames({
  23. 'cbk-btn': true,
  24. 'cbk-btn--raised': props.raised,
  25. 'cbk-btn--unelevated': props.unelevated,
  26. 'cbk-btn--outlined': props.outlined,
  27. 'cbk-btn--disabled': props.disabled,
  28. 'cbk-btn--small': props.small,
  29. })
  30. if (props.icon) {
  31. return (
  32. <IconButton
  33. onClick={props.onClick}
  34. unelevated={props.unelevated}
  35. raised={props.raised}
  36. outlined={props.outlined}
  37. className={classnames({
  38. 'btn-small': props.small,
  39. }, props.className)}
  40. type={props.type || 'button'}
  41. disabled={props.disabled}
  42. style={props.style}
  43. >
  44. <Icon material icon={props.icon}/>
  45. </IconButton>
  46. );
  47. } else {
  48. return (
  49. <button
  50. disabled={props.disabled}
  51. className={btnClassNames}
  52. onClick={props.onClick}
  53. style={props.style}
  54. type={props.type || 'button'}
  55. >
  56. { props.children }
  57. </button>
  58. )
  59. }
  60. };