preact-material-components
Version:
preact wrapper for "Material Components for the web"
65 lines (51 loc) • 1.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _preact = require("preact");
var _MaterialComponent = _interopRequireDefault(require("../MaterialComponent"));
var _Icon = _interopRequireDefault(require("../Icon/"));
var _generateThemeClass = _interopRequireDefault(require("../themeUtils/generateThemeClass"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
/**
* @prop dense = false
* @prop raised = false
* @prop compact = false
* @prop disabled = false
* @prop unelevated = false
* @prop stroked = false
*/
class Button extends _MaterialComponent.default {
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 += (0, _generateThemeClass.default)(themeProp) + ' ';
});
return (0, _preact.h)(ButtonElement, _extends({
ref: this.setControlRef
}, props, {
className: className
}), this.props.children);
}
}
class ButtonIcon extends _Icon.default {
constructor() {
super();
this.componentName = 'button__icon';
}
}
Button.Icon = ButtonIcon;
var _default = Button;
exports.default = _default;