UNPKG

@appbuckets/react-ui

Version:
84 lines (81 loc) 2.19 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 Icon from '../Icon/Icon.js'; /* -------- * Component Render * -------- */ var Section = function (receivedProps) { var props = useWithDefaultProps('section', receivedProps); var _a = useSharedClassName(props), className = _a.className, _b = _a.rest, children = _b.children, content = _b.content, direction = _b.direction, divided = _b.divided, icon = _b.icon, label = _b.label, reverse = _b.reverse, rest = __rest(_b, [ 'children', 'content', 'direction', 'divided', 'icon', 'label', 'reverse', ]); var ElementType = useElementType(Section, receivedProps, props); var contentNode = childrenUtils.isNil(children) ? content : children; var classes = clsx( direction, { divided: divided, reverse: reverse, 'without-content': !contentNode, }, 'section', className ); var labelClasses = clsx('label', { 'has-text-right': direction === 'horizontal' && reverse, }); var contentClasses = clsx('content', { 'has-text-right': direction === 'horizontal' && !reverse, }); var labelElement = React.useMemo( function () { return ( label && React.createElement( 'div', { className: labelClasses }, Icon.create(icon, { autoGenerateKey: false }), label ) ); }, [label, icon, labelClasses] ); return React.createElement( ElementType, __assign({}, rest, { className: classes }), labelElement, contentNode && React.createElement('div', { className: contentClasses }, contentNode) ); }; Section.displayName = 'Section'; Section.create = createShorthandFactory(Section, function (content) { return { content: content }; }); export { Section as default };