UNPKG

react-elegant-ui

Version:

Elegant UI components, made by BEM best practices for react

87 lines 3.2 kB
var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __rest = this && this.__rest || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; import React from 'react'; import { cn } from '@bem-react/classname'; import { useComponentRegistry } from '../../lib/di'; import { usePress } from '@react-aria/interactions'; import { mergeProps } from '@react-aria/utils'; import './Button.css'; export var cnButton = cn('Button'); export var defaultProps = { as: 'button' }; export var Button = function (_a) { var as = _a.as, disabled = _a.disabled, raw = _a.raw, icon = _a.icon, iconLeft = _a.iconLeft, iconRight = _a.iconRight, children = _a.children, innerRef = _a.innerRef, className = _a.className, addonBefore = _a.addonBefore, addonAfter = _a.addonAfter, onPress = _a.onPress, onPressChange = _a.onPressChange, onPressStart = _a.onPressStart, onPressEnd = _a.onPressEnd, onPressUp = _a.onPressUp, props = __rest(_a, ["as", "disabled", "raw", "icon", "iconLeft", "iconRight", "children", "innerRef", "className", "addonBefore", "addonAfter", "onPress", "onPressChange", "onPressStart", "onPressEnd", "onPressUp"]); var _b = usePress({ isDisabled: disabled, onPress: onPress, onPressChange: onPressChange, onPressStart: onPressStart, onPressEnd: onPressEnd, onPressUp: onPressUp }), isPressed = _b.isPressed, pressProps = _b.pressProps; var iconLeftOrIcon = iconLeft || icon; // insert innerRef back when `as` is component type if (typeof as !== 'string') { props.innerRef = innerRef; } var Component = as; var propsMix = mergeProps(props, pressProps); var _c = useComponentRegistry(cnButton()), Content = _c.Content, Text = _c.Text, Icon = _c.Icon; return /*#__PURE__*/React.createElement(Component, __assign({ ref: typeof as === 'string' ? innerRef : undefined }, propsMix, { className: cnButton({ pressed: isPressed, disabled: disabled, raw: raw }, [className]), disabled: disabled, "aria-disabled": disabled }), addonBefore, raw ? children : ( /*#__PURE__*/React.createElement(Content, null, iconLeftOrIcon && ( /*#__PURE__*/React.createElement(Icon, { provider: iconLeftOrIcon, side: "left" })), !children ? undefined : /*#__PURE__*/React.createElement(Text, null, children), iconRight && /*#__PURE__*/React.createElement(Icon, { provider: iconRight, side: "right" }))), addonAfter); }; Button.displayName = cnButton(); Button.defaultProps = defaultProps;