Skip to content

Instantly share code, notes, and snippets.

@andyhqtran
Last active October 28, 2016 23:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andyhqtran/c3c4dc7a4597fa3e06db1b04ed046bfb to your computer and use it in GitHub Desktop.
Save andyhqtran/c3c4dc7a4597fa3e06db1b04ed046bfb to your computer and use it in GitHub Desktop.
React Components
/**
* External dependencies
*/
import React, { PropTypes } from 'react';
import classNames from 'classnames';
import noop from 'lodash/noop';
/**
* Local variables
*/
const propTypes = {
children: PropTypes.node,
className: PropTypes.string,
danger: PropTypes.bool,
hovered: PropTypes.bool,
inverse: PropTypes.bool,
onClick: noop,
onContextMenu: noop,
onDoubleClick: noop,
onDrag: noop,
onDragEnd: noop,
onDragEnter: noop,
onDragExi: noop,
onDragLeave: noop,
onDragOver: noop,
onDragStart: noop,
onDrop: noop,
onMouseDown: noop,
onMouseEnter: noop,
onMouseLeav: noop,
onMouseMove: noop,
onMouseOut: noop,
onMouseOver: noop,
onMouseUp: noop,
primary: PropTypes.bool,
success: PropTypes.bool,
warning: PropTypes.bool,
};
/**
* <Button />
*/
const Button = ({
children,
className,
danger,
inverse,
onClick,
onContextMenu,
onDoubleClick,
onDrag,
onDragEnd,
onDragEnter,
onDragExi,
onDragLeave,
onDragOver,
onDragStart,
onDrop,
onMouseDown,
onMouseEnter,
onMouseLeav,
onMouseMove,
onMouseOut,
onMouseOver,
onMouseUp,
primary,
success,
warning,
}) => {
const classes = classNames({
button: true,
'button--danger': danger,
'button--inverse': inverse,
'button--primary': primary,
'button--success': success,
'button--warning': warning,
}, className);
return (
<button
className={classes}
onClick={onClick}
onContextMenu={onContextMenu}
onDoubleClick={onDoubleClick}
onDrag={onDrag}
onDragEnd={onDragEnd}
onDragEnter={onDragEnter}
onDragExi={onDragExi}
onDragLeave={onDragLeave}
onDragOver={onDragOver}
onDragStart={onDragStart}
onDrop={onDrop}
onMouseDown={onMouseDown}
onMouseEnter={onMouseEnter}
onMouseLeav={onMouseLeav}
onMouseMove={onMouseMove}
onMouseOut={onMouseOut}
onMouseOver={onMouseOver}
onMouseUp={onMouseUp}
>
{children}
</button>
);
};
Button.propTypes = propTypes;
export default Button;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment