react-smtc-ui-utils
Version:
react-smtc-ui-utils React component
190 lines • 7.73 kB
JavaScript
function _objectDestructuringEmpty(obj) { if (obj == null) throw new TypeError("Cannot destructure " + obj); }
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
import React from 'react';
import PropTypes from "prop-types";
import { Item } from "semantic-ui-react";
import { isStringEmpty } from "../static/ObjectsUtils";
import _ from "lodash";
import { ColumnCheckBox } from "./PublicTables";
var DefaultResponsiveTableBody = /*#__PURE__*/function (_React$Component) {
function DefaultResponsiveTableBody(props) {
var _this;
_this = _React$Component.call(this, props) || this;
_this.state = {};
return _this;
}
_inheritsLoose(DefaultResponsiveTableBody, _React$Component);
var _proto = DefaultResponsiveTableBody.prototype;
_proto.modifyCheckedArray = function modifyCheckedArray(val) {
var modifyCheckedArray = this.props.modifyCheckedArray;
if (modifyCheckedArray) {
modifyCheckedArray(val);
}
};
_proto.render = function render() {
var _this2 = this;
_objectDestructuringEmpty(this.state);
var _this$props = this.props,
defaultResponsiveParam = _this$props.defaultResponsiveParam,
headerMap = _this$props.headerMap,
dataSet = _this$props.dataSet,
hiddenHeaderMap = _this$props.hiddenHeaderMap,
checkedIds = _this$props.checkedIds;
var image = defaultResponsiveParam.image,
header = defaultResponsiveParam.header,
meta = defaultResponsiveParam.meta,
description = defaultResponsiveParam.description,
extra = defaultResponsiveParam.extra,
unstackable = defaultResponsiveParam.unstackable;
var checkBox = findCheckBox(headerMap, hiddenHeaderMap);
var checkBoxDiv = /*#__PURE__*/React.createElement("div", null);
if (!_.isEmpty(checkBox)) {
var checkBoxStyle = checkBox.checkBoxStyle,
accessor = checkBox.accessor;
var value = dataSet[accessor] === undefined ? '' : dataSet[accessor];
checkBoxDiv = /*#__PURE__*/React.createElement(ColumnCheckBox, {
id: value,
checkBoxStyle: checkBoxStyle,
checked: _.includes(checkedIds, value),
getCallBackId: function getCallBackId(val) {
return _this2.modifyCheckedArray(val);
}
});
}
return /*#__PURE__*/React.createElement(Item.Group, {
divided: true,
unstackable: unstackable
}, /*#__PURE__*/React.createElement(Item, null, renderImage(headerMap, dataSet, image, this.props, hiddenHeaderMap), /*#__PURE__*/React.createElement(Item.Content, null, checkBoxDiv, renderHeader(headerMap, dataSet, header, this.props, hiddenHeaderMap), renderMeta(headerMap, dataSet, meta, this.props, hiddenHeaderMap), renderDescription(headerMap, dataSet, description, this.props, hiddenHeaderMap), renderExtra(headerMap, dataSet, extra, this.props, hiddenHeaderMap))));
};
return DefaultResponsiveTableBody;
}(React.Component);
export { DefaultResponsiveTableBody as default };
DefaultResponsiveTableBody.propTypes = process.env.NODE_ENV !== "production" ? {
defaultResponsiveParam: PropTypes.object,
headerMap: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),
dataSet: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),
hiddenHeaderMap: PropTypes.oneOfType([PropTypes.array, PropTypes.object])
} : {};
function renderImage(headerMap, dataSet, image, parentProps, hiddenHeaderMap) {
if (isStringEmpty(image) || _.isEmpty(image)) {
return null;
}
var accessor = image.accessor,
size = image.size;
var src = dataSet[accessor];
return /*#__PURE__*/React.createElement(Item.Image, {
size: isStringEmpty(size) ? "tiny" : size,
src: src
});
}
function renderHeader(headerMap, dataSet, header, parentProps, hiddenHeaderMap) {
if (isStringEmpty(header) || _.isEmpty(header)) {
return null;
}
var accessor = header.accessor,
prefix = header.prefix,
suffix = header.suffix,
enableColFormat = header.enableColFormat;
var content = generateDataByPreAndSuffix(dataSet, accessor, prefix, suffix);
if (enableColFormat) {
content = colFormatter(headerMap, hiddenHeaderMap, accessor, content, dataSet);
}
return /*#__PURE__*/React.createElement(Item.Header, {
content: content
});
}
function renderMeta(headerMap, dataSet, meta, parentProps, hiddenHeaderMap) {
if (isStringEmpty(meta) || _.isEmpty(meta)) {
return null;
}
var accessor = meta.accessor,
prefix = meta.prefix,
suffix = meta.suffix,
enableColFormat = meta.enableColFormat;
var content = generateDataByPreAndSuffix(dataSet, accessor, prefix, suffix);
if (enableColFormat) {
content = colFormatter(headerMap, hiddenHeaderMap, accessor, content, dataSet);
}
return /*#__PURE__*/React.createElement(Item.Meta, {
content: content
});
}
function renderDescription(headerMap, dataSet, description, parentProps, hiddenHeaderMap) {
if (isStringEmpty(description) || _.isEmpty(description)) {
return null;
}
var accessor = description.accessor,
prefix = description.prefix,
suffix = description.suffix,
enableColFormat = description.enableColFormat;
var content = generateDataByPreAndSuffix(dataSet, accessor, prefix, suffix);
if (enableColFormat) {
content = colFormatter(headerMap, hiddenHeaderMap, accessor, content, dataSet);
}
return /*#__PURE__*/React.createElement(Item.Description, {
content: content
});
}
function renderExtra(headerMap, dataSet, extra, parentProps, hiddenHeaderMap) {
if (isStringEmpty(extra) || _.isEmpty(extra)) {
return null;
}
var accessor = extra.accessor,
prefix = extra.prefix,
suffix = extra.suffix,
enableColFormat = extra.enableColFormat;
var content = generateDataByPreAndSuffix(dataSet, accessor, prefix, suffix);
if (enableColFormat) {
content = colFormatter(headerMap, hiddenHeaderMap, accessor, content, dataSet);
}
return /*#__PURE__*/React.createElement(Item.Extra, {
content: content
});
}
function generateDataByPreAndSuffix(dataSet, accessor, prefix, suffix) {
//console.log(dataSet[accessor])
var content = isStringEmpty(dataSet[accessor]) ? "" : dataSet[accessor];
if (!isStringEmpty(prefix)) {
content = prefix + content;
}
if (!isStringEmpty(suffix)) {
content = content + suffix;
}
return content;
}
function colFormatter(headerMap, hiddenHeaderMap, responsiveAccessor, content, dataSet) {
var colFormat = _.findLast(headerMap, function (element) {
var accessor = element.props.accessor;
return accessor === responsiveAccessor;
});
if (_.isEmpty(colFormat)) {
colFormat = _.findLast(hiddenHeaderMap, function (element) {
var accessor = element.props.accessor;
return accessor === responsiveAccessor;
});
}
if (!_.isEmpty(colFormat)) {
var columnFormat = colFormat.props.columnFormat;
if (columnFormat) {
return columnFormat(content, dataSet);
}
}
return "";
}
function findCheckBox(headerMap, hiddenHeaderMap) {
var checkBox = _.findLast(headerMap, function (element) {
var colAsCheckBox = element.props.colAsCheckBox;
return colAsCheckBox === true;
});
if (_.isEmpty(checkBox)) {
checkBox = _.findLast(hiddenHeaderMap, function (element) {
var colAsCheckBox = element.props.colAsCheckBox;
return colAsCheckBox === true;
});
}
if (!_.isEmpty(checkBox)) {
return checkBox.props;
}
return null;
}