UNPKG

@pmwcs/button

Version:

PMWCS button component

107 lines (87 loc) 5.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Button = void 0; var _preact = require("preact"); var _compat = require("preact/compat"); var _ripple = require("@pmwcs/ripple"); var _icon = require("@pmwcs/icon"); var _base = require("@pmwcs/base"); var _excluded = ["dense", "raised", "unelevated", "outlined", "secondary", "standard", "danger", "activated", "icon", "label", "trailingIcon", "children", "theme"]; 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); } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } /** * The Button component. */ var Button = (0, _ripple.withRipple)({ surface: false })((0, _base.createComponent)(function Button(props, ref) { var dense = props.dense, raised = props.raised, unelevated = props.unelevated, outlined = props.outlined, secondary = props.secondary, standard = props.standard, danger = props.danger, activated = props.activated, icon = props.icon, label = props.label, trailingIcon = props.trailingIcon, children = props.children, theme = props.theme, rest = _objectWithoutProperties(props, _excluded); if (!props.disabled) { if (secondary) { props.theme = raised || unelevated ? ['secondaryBg', 'onSecondary'] : 'secondary'; } else if (standard) { props.theme = raised || unelevated ? ['standardBg', 'onStandard'] : 'standard'; } } var className = (0, _base.useClassNames)(props, ['mdc-button', { 'mdc-button--dense': dense, 'mdc-button--raised': raised, 'mdc-button--unelevated': unelevated, 'mdc-button--outlined': outlined, 'mdc-button--activated': activated }]); if (danger) { var existingStyle = rest.style || {}; var dangerStyle = { '--mdc-theme-primary': 'var(--mdc-theme-error)', '--mdc-theme-on-primary': 'var(--mdc-theme-on-error)' }; rest.style = _objectSpread(_objectSpread({}, dangerStyle), existingStyle); } return (0, _preact.h)("button", _extends({}, rest, { ref: ref, className: className }), (0, _preact.h)(ButtonRipple, null), !!icon && (0, _preact.h)(ButtonIcon, { icon: icon }), (0, _preact.h)("span", { className: "mdc-button__label" }, label, children), !!trailingIcon && (0, _preact.h)(ButtonIcon, { icon: trailingIcon })); })); /********************************************************************* * Bits *********************************************************************/ exports.Button = Button; var ButtonRipple = (0, _compat.memo)(function ButtonRipple() { return (0, _preact.h)("div", { className: "mdc-button__ripple" }); }); /** An icon that goes inside of buttons. This is an instance of the Icon component. */ var ButtonIcon = (0, _base.createMemoComponent)(function ButtonIcon(props, ref) { var className = (0, _base.useClassNames)(props, ['mdc-button__icon']); return (0, _preact.h)(_icon.Icon, _extends({}, props, { className: className, ref: ref })); });