UNPKG

@appbuckets/react-ui

Version:
156 lines (149 loc) 3.86 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 Icon = require('../Icon/Icon.js'); var TableCellContent = require('./TableCellContent.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 TableCell = function (receivedProps) { var props = BucketContext.useWithDefaultProps('tableCell', receivedProps); var _a = customHook.useSharedClassName(props), className = _a.className, _b = _a.rest, active = _b.active, children = _b.children, content = _b.content, header = _b.header, icon = _b.icon, meta = _b.meta, selectable = _b.selectable, wrapped = _b.wrapped, rawRest = tslib.__rest(_b, [ 'active', 'children', 'content', 'header', 'icon', 'meta', 'selectable', 'wrapped', ]); var _c = tslib.__read(customHook.useSplitStateClassName(rawRest), 2), stateClassName = _c[0], rest = _c[1]; var ElementType = reactUiCore.useElementType(TableCell, receivedProps, props); var classes = clsx__default['default']( { active: active, selectable: selectable, wrapped: wrapped, 'with-icon': !!icon, }, 'cell', className, stateClassName ); // ---- // Generate Memoized Shorthand Content // ---- var iconElement = React__namespace.useMemo( function () { return Icon.create(icon, { autoGenerateKey: false }); }, [icon] ); var metaElement = React__namespace.useMemo( function () { return TableCellContent.create(meta, { autoGenerateKey: false, overrideProps: { type: 'meta' }, }); }, [meta] ); var titleElement = React__namespace.useMemo( function () { return TableCellContent.create(header, { autoGenerateKey: false, overrideProps: { type: 'title' }, }); }, [header] ); var contentElement = React__namespace.useMemo( function () { return TableCellContent.create(content, { autoGenerateKey: false, overrideProps: { type: 'content' }, }); }, [content] ); // ---- // Render Children // ---- if (!reactUiCore.childrenUtils.isNil(children)) { return React__namespace.createElement( ElementType, tslib.__assign({}, rest, { className: classes }), iconElement, children ); } // ---- // Render Using Shorthand // ---- return React__namespace.createElement( ElementType, tslib.__assign({}, rest, { className: classes }), iconElement, metaElement, titleElement, contentElement ); }; TableCell.displayName = 'TableCell'; TableCell.Content = TableCellContent; TableCell.create = reactUiCore.createShorthandFactory( TableCell, function (content) { return { header: content }; } ); module.exports = TableCell;