UNPKG

@appbuckets/react-ui

Version:
146 lines (139 loc) 3.58 kB
'use strict'; var tslib = require('tslib'); var React = require('react'); var clsx = require('clsx'); var reactUiCore = require('@appbuckets/react-ui-core'); var customHook = require('../utils/customHook.js'); require('../BucketTheme/BucketTheme.js'); var BucketContext = require('../BucketTheme/BucketContext.js'); var Header = require('../Header/Header.js'); var Icon = require('../Icon/Icon.js'); function _interopDefaultLegacy(e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; } function _interopNamespace(e) { if (e && e.__esModule) return e; var n = Object.create(null); if (e) { Object.keys(e).forEach(function (k) { if (k !== 'default') { var d = Object.getOwnPropertyDescriptor(e, k); Object.defineProperty( n, k, d.get ? d : { enumerable: true, get: function () { return e[k]; }, } ); } }); } n['default'] = e; return Object.freeze(n); } var React__namespace = /*#__PURE__*/ _interopNamespace(React); var clsx__default = /*#__PURE__*/ _interopDefaultLegacy(clsx); /* -------- * Component Render * -------- */ var HeroButton = function (receivedProps) { var props = BucketContext.useWithDefaultProps('heroButton', receivedProps); var _a = customHook.useSharedClassName(props), className = _a.className, _b = _a.rest, active = _b.active, content = _b.content, disabled = _b.disabled, discreet = _b.discreet, icon = _b.icon, onClick = _b.onClick, subheader = _b.subheader, variation = _b.variation, rawRest = tslib.__rest(_b, [ 'active', 'content', 'disabled', 'discreet', 'icon', 'onClick', 'subheader', 'variation', ]); /** Get the component element type */ var ElementType = reactUiCore.useElementType( HeroButton, receivedProps, props ); /** Split state className from rest props */ var _c = tslib.__read(customHook.useSplitStateClassName(rawRest), 2), stateClasses = _c[0], rest = _c[1]; /** Handle Buttons Click */ var handleClick = function (e) { /** A disable button could not be clicked */ if (disabled) { e.preventDefault(); return; } if (typeof onClick === 'function') { e.stopPropagation(); onClick(e, props); } }; /** Build the element class list */ var classes = clsx__default['default']( { active: active, disabled: disabled, discreet: discreet, }, 'hero-button', typeof variation === 'number' ? 'variation-'.concat(variation) : undefined, stateClasses, className ); /** Build Hero Content */ var headerContent = React__namespace.useMemo( function () { return Header.create( { content: content, subheader: subheader, }, { autoGenerateKey: false, } ); }, [content, subheader] ); var iconElement = React__namespace.useMemo( function () { return ( icon && Icon.create(icon, { autoGenerateKey: false, }) ); }, [icon] ); return React__namespace.createElement( ElementType, tslib.__assign({}, rest, { className: classes, onClick: handleClick }), React__namespace.createElement( 'div', { className: 'content' }, headerContent, iconElement ) ); }; HeroButton.displayName = 'HeroButton'; module.exports = HeroButton;