UNPKG

@fluentui/react-northstar

Version:
120 lines (119 loc) 4.25 kB
import _map from "lodash/map"; import _invoke from "lodash/invoke"; import { tableRowBehavior } from '@fluentui/accessibility'; import { getElementType, mergeVariablesOverrides, useAccessibility, useStyles, useTelemetry, useUnhandledProps, useFluentContext } from '@fluentui/react-bindings'; import { Ref } from '@fluentui/react-component-ref'; import * as customPropTypes from '@fluentui/react-proptypes'; import * as PropTypes from 'prop-types'; import * as React from 'react'; import { childrenExist, commonPropTypes, createShorthandFactory } from '../../utils'; import { TableCell } from './TableCell'; export var tableRowClassName = 'ui-table__row'; /** * Component represents a single row in a tabular structure */ export var TableRow = /*#__PURE__*/function () { var TableRow = /*#__PURE__*/React.forwardRef(function (props, ref) { var context = useFluentContext(); var _useTelemetry = useTelemetry(TableRow.displayName, context.telemetry), setStart = _useTelemetry.setStart, setEnd = _useTelemetry.setEnd; setStart(); var rowRef = React.useRef(); var className = props.className, design = props.design, styles = props.styles, items = props.items, header = props.header, compact = props.compact, children = props.children, accessibility = props.accessibility, variables = props.variables, selected = props.selected; var hasChildren = childrenExist(children); var ElementType = getElementType(props); var unhandledProps = useUnhandledProps(TableRow.handledProps, props); var getA11yProps = useAccessibility(accessibility, { debugName: TableRow.displayName, actionHandlers: { // https://github.com/microsoft/fluent-ui-react/issues/2150 unsetRowTabbable: function unsetRowTabbable(e) { rowRef.current.setAttribute('tabindex', '-1'); }, performClick: function performClick(e) { if (e.currentTarget === e.target) { _invoke(props, 'onClick', e, props); e.preventDefault(); } } }, mapPropsToBehavior: function mapPropsToBehavior() { return { selected: selected, header: header }; }, rtl: context.rtl }); var _useStyles = useStyles(TableRow.displayName, { className: tableRowClassName, mapPropsToStyles: function mapPropsToStyles() { return { header: header, compact: compact }; }, mapPropsToInlineStyles: function mapPropsToInlineStyles() { return { className: className, design: design, styles: styles, variables: variables }; }, rtl: context.rtl }), classes = _useStyles.classes; var renderCells = function renderCells() { return _map(items, function (item) { return TableCell.create(item, { defaultProps: function defaultProps() { return getA11yProps('cell', {}); }, overrideProps: function overrideProps(predefinedProps) { return { variables: mergeVariablesOverrides(variables, predefinedProps.variables) }; } }); }); }; var element = /*#__PURE__*/React.createElement(Ref, { innerRef: rowRef }, getA11yProps.unstable_wrapWithFocusZone( /*#__PURE__*/React.createElement(ElementType, getA11yProps('root', Object.assign({ className: classes.root, ref: ref }, unhandledProps)), hasChildren && children, !hasChildren && renderCells()))); setEnd(); return element; }); TableRow.displayName = 'TableRow'; TableRow.propTypes = Object.assign({}, commonPropTypes.createCommon({ content: false }), { items: customPropTypes.collectionShorthand, header: PropTypes.bool, compact: PropTypes.bool, selected: PropTypes.bool }); TableRow.handledProps = Object.keys(TableRow.propTypes); TableRow.defaultProps = { accessibility: tableRowBehavior }; TableRow.create = createShorthandFactory({ Component: TableRow, mappedArrayProp: 'items' }); return TableRow; }(); //# sourceMappingURL=TableRow.js.map