UNPKG

@appbuckets/react-ui

Version:
90 lines (87 loc) 2.37 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 Header from '../Header/Header.js'; /* -------- * Component Render * -------- */ var ModalHeader = function (receivedProps) { var props = useWithDefaultProps('modalHeader', receivedProps); var _a = useSharedClassName(props), className = _a.className, _b = _a.rest, actions = _b.actions, children = _b.children, content = _b.content, disabled = _b.disabled, divided = _b.divided, icon = _b.icon, meta = _b.meta, subheader = _b.subheader, rest = __rest(_b, [ 'actions', 'children', 'content', 'disabled', 'divided', 'icon', 'meta', 'subheader', ]); /** Get the component element type */ var ElementType = useElementType(ModalHeader, receivedProps, props); /** Build the element class list */ var classes = clsx('modal-header', className); /** Build a memoized Header */ var headerElement = React.useMemo( function () { return Header.create( { actions: actions, content: content, disabled: disabled, divided: divided, icon: icon, subheader: subheader, }, { autoGenerateKey: false } ); }, [actions, content, disabled, divided, icon, subheader] ); var metaElement = React.useMemo( function () { return ( meta && React.createElement('div', { className: 'modal-meta' }, meta) ); }, [meta] ); /** If children are declared, render them */ if (!childrenUtils.isNil(children)) { return React.createElement( ElementType, __assign({}, rest, { className: classes }), children ); } return React.createElement( ElementType, __assign({}, rest, { className: classes }), headerElement, metaElement ); }; ModalHeader.displayName = 'ModalHeader'; ModalHeader.create = createShorthandFactory(ModalHeader, function (content) { return { content: content }; }); export { ModalHeader as default };