UNPKG

@appbuckets/react-ui

Version:
79 lines (76 loc) 2.13 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'; import Header from '../Header/Header.js'; /* -------- * Component Render * -------- */ var EmptyContent = function (receivedProps) { /** Get component props */ var props = useWithDefaultProps('emptyContent', receivedProps); var _a = useSharedClassName(props), className = _a.className, _b = _a.rest, children = _b.children, content = _b.content, button = _b.button, header = _b.header, icon = _b.icon, rest = __rest(_b, ['children', 'content', 'button', 'header', 'icon']); var classes = clsx('empty', className); var ElementType = useElementType(EmptyContent, receivedProps, props); var buttonElement = React.useMemo( function () { return Button.create(button, { autoGenerateKey: false }); }, [button] ); var headerElement = React.useMemo( function () { return ( (header || content || icon) && Header.create( { content: header, subheader: content, icon: icon, }, { autoGenerateKey: false, overrideProps: { textAlign: 'center', }, } ) ); }, [header, content, icon] ); if (!childrenUtils.isNil(children)) { return React.createElement( ElementType, __assign({}, rest, { className: classes }), children ); } return React.createElement( ElementType, __assign({}, rest, { className: classes }), headerElement, buttonElement ); }; EmptyContent.displayName = 'EmptyContent'; EmptyContent.create = createShorthandFactory(EmptyContent, function (header) { return { header: header }; }); export { EmptyContent as default };