blob: 8d0ec77027b756189be30b6c18a35d5ff850cd95 [file] [log] [blame]
Jeremy Mordkoffe29efc32016-09-07 18:59:17 -04001import React from 'react';
2
3import 'style/base.scss';
4import './button.scss';
5
6const icons = {
7 check: require("style/icons/svg-sprite-navigation-symbol.svg") + "#ic_check_24px"
8}
9
10export default class SqButton extends React.Component {
11 constructor(props) {
12 super(props);
13 }
14 render() {
15 let {icon, primary, size, disabled, label, ...props} = this.props;
16 let svgHTML = null;
17 let Class = "SqButton";
18 if(icon) {
19 svgHTML = <svg className="svg-24px SqButton-icon">
20 <use xlinkHref={icons[icon]}></use></svg>;
21 }
22 if(primary) {
23 Class += " SqButton--primary";
24 } else {
25 Class += " SqButton--normal";
26 }
27 if(size && (
28 size == 'small'
29 || size == 'medium'
30 || size == 'large'
31 )
32 ) {
33 Class += " SqButton--" + size;
34 }
35 if(disabled) {
36 Class += " is-disabled";
37 }
38 return (
Jeremy Mordkoff03156e32017-09-30 21:42:44 -040039 <div style={{display: 'flex'}} onClick={this.props.onClick}>
Jeremy Mordkoffe29efc32016-09-07 18:59:17 -040040 <div className={Class} tabIndex="0">
Jeremy Mordkoff03156e32017-09-30 21:42:44 -040041 {svgHTML}
42 <div className="SqButton-content">{label}</div>
Jeremy Mordkoffe29efc32016-09-07 18:59:17 -040043 </div>
Jeremy Mordkoff03156e32017-09-30 21:42:44 -040044 </div>
45 )
46 }
47}
48
49export class ButtonGroup extends React.Component {
50 render() {
51 let className = "sqButtonGroup";
52 if (this.props.className) {
53 className = `${className} ${this.props.className}`
54 }
55 return (
56 <div className={className} style={this.props.style}>
57 {this.props.children}
Jeremy Mordkoffe29efc32016-09-07 18:59:17 -040058 </div>
59 )
60 }
61}
62
Jeremy Mordkoff03156e32017-09-30 21:42:44 -040063
Jeremy Mordkoffe29efc32016-09-07 18:59:17 -040064SqButton.defaultProps = {
Jeremy Mordkoff03156e32017-09-30 21:42:44 -040065 onClick: function(e) {
66 console.log('Clicked')
67 },
Jeremy Mordkoffe29efc32016-09-07 18:59:17 -040068 icon: false,
69 primary: false,
70 disabled: false,
71 size: false, // 'small', 'medium', 'large'
72 label: 'Submit'
73}