From 4662d5f5ddc9ce85d4c50a783ca7950b06714a0d Mon Sep 17 00:00:00 2001 From: mrwittman612 Date: Thu, 7 Jan 2021 18:29:58 -0600 Subject: [PATCH] converted MTableGroupRow class component to functional component --- src/components/m-table-group-row.js | 167 ++++++++++++++-------------- 1 file changed, 84 insertions(+), 83 deletions(-) diff --git a/src/components/m-table-group-row.js b/src/components/m-table-group-row.js index 09262e4e..e0c4645c 100644 --- a/src/components/m-table-group-row.js +++ b/src/components/m-table-group-row.js @@ -6,100 +6,99 @@ import PropTypes from 'prop-types'; import * as React from 'react'; /* eslint-enable no-unused-vars */ -export default class MTableGroupRow extends React.Component { - rotateIconStyle = (isOpen) => ({ +export default function MTableGroupRow() { + const rotateIconStyle = (isOpen) => ({ transform: isOpen ? 'rotate(90deg)' : 'none', }); - render() { - let colSpan = this.props.columns.filter((columnDef) => !columnDef.hidden) - .length; - this.props.options.selection && colSpan++; - this.props.detailPanel && colSpan++; - this.props.actions && this.props.actions.length > 0 && colSpan++; - const column = this.props.groups[this.props.level]; + function render() { + let colSpan = props.columns.filter((columnDef) => !columnDef.hidden).length; + props.options.selection && colSpan++; + props.detailPanel && colSpan++; + props.actions && props.actions.length > 0 && colSpan++; + const column = props.groups[props.level]; let detail; - if (this.props.groupData.isExpanded) { - if (this.props.groups.length > this.props.level + 1) { + if (props.groupData.isExpanded) { + if (props.groups.length > props.level + 1) { // Is there another group - detail = this.props.groupData.groups.map((groupData, index) => ( - ( + )); } else { - detail = this.props.groupData.data.map((rowData, index) => { + detail = props.groupData.data.map((rowData, index) => { if (rowData.tableData.editing) { return ( - ); } else { return ( - ); } @@ -108,56 +107,58 @@ export default class MTableGroupRow extends React.Component { } const freeCells = []; - for (let i = 0; i < this.props.level; i++) { + for (let i = 0; i < props.level; i++) { freeCells.push(); } - let value = this.props.groupData.value; + let value = props.groupData.value; if (column.lookup) { value = column.lookup[value]; } let title = column.title; - if (typeof this.props.options.groupTitle === 'function') { - title = this.props.options.groupTitle(this.props.groupData); + if (typeof props.options.groupTitle === 'function') { + title = props.options.groupTitle(props.groupData); } else if (typeof title !== 'string') { title = React.cloneElement(title); } - const separator = this.props.options.groupRowSeparator || ': '; + const separator = props.options.groupRowSeparator || ': '; return ( <> {freeCells} - { - this.props.onGroupExpandChanged(this.props.path); + props.onGroupExpandChanged(props.path); }} > - + {title} {separator} - + {detail} ); } + + return render(); } MTableGroupRow.defaultProps = {