UNPKG

@appbuckets/react-ui

Version:
62 lines (59 loc) 1.78 kB
import { __rest, __assign } from 'tslib'; import * as React from 'react'; import clsx from 'clsx'; import { createShorthandFactory, useElementType, childrenUtils, } from '@appbuckets/react-ui-core'; import { useSharedClassName } from '../utils/customHook.js'; import '../BucketTheme/BucketTheme.js'; import { useWithDefaultProps } from '../BucketTheme/BucketContext.js'; import Button from '../Button/Button.js'; /* -------- * Component Render * -------- */ var PanelBody = function (receivedProps) { var props = useWithDefaultProps('panelBody', receivedProps); var _a = useSharedClassName(props), className = _a.className, _b = _a.rest, children = _b.children, content = _b.content, fab = _b.fab, rest = __rest(_b, ['children', 'content', 'fab']); var ElementType = useElementType(PanelBody, receivedProps, props); var classes = clsx( 'body', Array.isArray(fab) && !!fab.length && 'with-fab', className ); /** Build Fab Buttons */ var fabButtons = React.useMemo( function () { return Array.isArray(fab) ? fab.map(function (buttonProps) { return Button.create(buttonProps, { autoGenerateKey: true, overrideProps: { fab: true }, }); }) : []; }, [fab] ); var fabsElement = !!fabButtons.length && React.createElement('div', { className: 'fabs' }, fabButtons); return React.createElement( ElementType, __assign({}, rest, { className: classes }), childrenUtils.isNil(children) ? content : children, fabsElement ); }; PanelBody.displayName = 'PanelBody'; PanelBody.create = createShorthandFactory(PanelBody, function (content) { return { content: content }; }); export { PanelBody as default };