UNPKG

preact-material-components

Version:
49 lines (44 loc) 1.22 kB
import {h} from 'preact'; import MaterialComponent from '../MaterialComponent'; import Icon from '../Icon/'; import generateThemeClass from '../themeUtils/generateThemeClass'; /** * @prop dense = false * @prop raised = false * @prop compact = false * @prop disabled = false * @prop unelevated = false * @prop stroked = false */ class Button extends MaterialComponent { constructor() { super(); this.componentName = 'button'; this._mdcProps = ['dense', 'raised', 'unelevated', 'outlined']; this.themeProps = ['primary', 'secondary']; } componentDidMount() { super.attachRipple(); } materialDom(props) { const ButtonElement = props.href ? 'a' : 'button'; let className = ''; this.themeProps.forEach(themeProp => { if (themeProp in props && props[themeProp] !== false) className += generateThemeClass(themeProp) + ' '; }); return ( <ButtonElement ref={this.setControlRef} {...props} className={className}> {this.props.children} </ButtonElement> ); } } class ButtonIcon extends Icon { constructor() { super(); this.componentName = 'button__icon'; } } Button.Icon = ButtonIcon; export default Button;