ResponsiveButton.tsx 973 B

123456789101112131415161718192021222324252627282930313233343536
  1. import React from 'react';
  2. export enum IconSide {
  3. left = 'left',
  4. right = 'right',
  5. }
  6. type Props = {
  7. splitted: boolean;
  8. title: string;
  9. onClick: () => void;
  10. buttonClassName?: string;
  11. iconClassName?: string;
  12. iconSide?: IconSide;
  13. disabled?: boolean;
  14. };
  15. export const ResponsiveButton = (props: Props) => {
  16. const defaultProps = {
  17. iconSide: IconSide.left,
  18. };
  19. props = { ...defaultProps, ...props };
  20. const { title, onClick, buttonClassName, iconClassName, splitted, iconSide, disabled } = props;
  21. return (
  22. <button
  23. className={`btn navbar-button ${buttonClassName ? buttonClassName : ''}`}
  24. onClick={onClick}
  25. disabled={disabled || false}
  26. >
  27. {iconClassName && iconSide === IconSide.left ? <i className={`${iconClassName}`} /> : null}
  28. <span className="btn-title">{!splitted ? title : ''}</span>
  29. {iconClassName && iconSide === IconSide.right ? <i className={`${iconClassName}`} /> : null}
  30. </button>
  31. );
  32. };