UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

160 lines (159 loc) 4.2 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true, }); function _export(target, all) { for (var name in all) Object.defineProperty(target, name, { enumerable: true, get: all[name], }); } _export(exports, { DefaultCell: function () { return DefaultCell; }, DefaultCellRendererPropsChildren: function () { return DefaultCellRendererPropsChildren; }, }); const _interop_require_default = require('@swc/helpers/_/_interop_require_default'); const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard'); const _react = /*#__PURE__*/ _interop_require_wildcard._(require('react')); const _reacttable = require('react-table'); const _classnames = /*#__PURE__*/ _interop_require_default._( require('classnames'), ); const _index = require('../../../utils/index.js'); const _utils = require('../utils.js'); const DefaultCellRendererPropsChildren = _react.createContext(void 0); const DefaultCell = (props) => { let instance = _react.useContext(_utils.TableInstanceContext); let isCustomCell = _react.useMemo( () => instance?.columns.find(({ id }) => props.cellProps.column.id === id) ?.Cell !== _reacttable.defaultColumn.Cell, [instance, props.cellProps.column.id], ); let isCellRendererChildrenCustom = _react.useContext(DefaultCellRendererPropsChildren) !== props.children; let isDefaultTextCell = 'string' == typeof props.cellProps.value && !isCustomCell && !isCellRendererChildrenCustom; let { cellElementProps: { className: cellElementClassName, style: cellElementStyle, ...cellElementProps }, children, startIcon, endIcon, cellProps, isDisabled, className, style, status, clamp = isDefaultTextCell, ...rest } = props; let { key: cellElementKey, ...cellElementPropsRest } = cellElementProps; return _react.createElement( _index.Box, { ...cellElementPropsRest, key: cellElementKey, ...rest, className: (0, _classnames.default)(cellElementClassName, className), 'aria-disabled': isDisabled?.(cellProps.row.original) || void 0, 'data-iui-status': status, style: { ...cellElementStyle, ...style, }, }, _react.createElement( _index.ShadowRoot, { key: `${cellElementKey}-shadow-root`, flush: false, css: css, }, _react.createElement('slot', { name: 'start', }), _react.createElement( TableCellContent, { shouldRenderWrapper: isDefaultTextCell, }, clamp ? _react.createElement( 'div', { className: _index.lineClamp.className, }, _react.createElement('slot', null), ) : _react.createElement('slot', null), ), _react.createElement('slot', { name: 'end', }), _react.createElement('slot', { name: 'shadows', }), ), startIcon && _react.createElement( _index.Box, { className: 'iui-table-cell-start-icon', slot: 'start', key: `${cellElementKey}-start`, }, startIcon, ), children, endIcon && _react.createElement( _index.Box, { className: 'iui-table-cell-end-icon', slot: 'end', key: `${cellElementKey}-end`, }, endIcon, ), ); }; if ('development' === process.env.NODE_ENV) DefaultCell.displayName = 'DefaultCell'; const TableCellContent = (props) => { let { children, shouldRenderWrapper } = props; return shouldRenderWrapper ? _react.createElement( 'div', { className: '_iui-table-cell-default-content', onClick: (e) => e.stopPropagation(), }, children, ) : children; }; const css = ` ._iui-table-cell-default-content { position: relative; isolation: isolate; } ._iui-table-cell-default-content::before { content: ''; display: block; position: absolute; inset: -6px; z-index: -1; } ${_index.lineClamp.css} `;