@appbuckets/react-ui
Version:
Just Another React UI Framework
170 lines (163 loc) • 4.81 kB
JavaScript
;
var tslib = require('tslib');
var React = require('react');
var clsx = require('clsx');
var reactUiCore = require('@appbuckets/react-ui-core');
require('../BucketTheme/BucketTheme.js');
var BucketContext = require('../BucketTheme/BucketContext.js');
var TableBody = require('./TableBody.js');
var TableCell = require('./TableCell.js');
var TableFooter = require('./TableFooter.js');
var TableHeader = require('./TableHeader.js');
var TableHeaderCell = require('./TableHeaderCell.js');
var TableRow = require('./TableRow.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 Table = function (receivedProps) {
var props = BucketContext.useWithDefaultProps('table', receivedProps);
props.as;
var children = props.children,
className = props.className,
compressed = props.compressed;
props.content;
var responsive = props.responsive,
rows = props.rows,
sortable = props.sortable,
tableData = props.tableData,
rest = tslib.__rest(props, [
'as',
'children',
'className',
'compressed',
'content',
'responsive',
'rows',
'sortable',
'tableData',
]);
// @ts-ignore
var ElementType = reactUiCore.useElementType(Table, receivedProps, props);
var classes = clsx__default['default'](
{
compressed: compressed,
sortable: sortable,
},
'table',
className
);
// ----
// Build Table Header
// ----
var headerRows =
(rows === null || rows === void 0 ? void 0 : rows.header) &&
rows.header.map(function (row) {
return TableRow.create(row, {
autoGenerateKey: true,
defaultProps: { cellAs: TableHeaderCell },
});
});
// ----
// Build Table Footer
// ----
var footerRows =
(rows === null || rows === void 0 ? void 0 : rows.footer) &&
rows.footer.map(function (row) {
return TableRow.create(row, {
autoGenerateKey: true,
defaultProps: { cellAs: TableCell },
});
});
if (!reactUiCore.childrenUtils.isNil(children)) {
var tableElementWithChildren = React__namespace.createElement(
ElementType,
tslib.__assign({}, rest, { className: classes }),
!!headerRows &&
React__namespace.createElement(TableHeader, { content: headerRows }),
children,
!!footerRows &&
React__namespace.createElement(TableFooter, { content: footerRows })
);
return responsive
? React__namespace.createElement(
'div',
{ className: 'responsive-table' },
tableElementWithChildren
)
: tableElementWithChildren;
}
// ----
// Build Table Body
// ----
var bodyRows =
(rows === null || rows === void 0 ? void 0 : rows.body) &&
Array.isArray(tableData) &&
(typeof rows.body === 'function'
? tableData.map(function (data, index, array) {
return TableRow.create(rows.body(data, index, array), {
autoGenerateKey: true,
defaultProps: { cellAs: TableCell },
});
})
: rows.body.map(function (row) {
return TableRow.create(row, {
autoGenerateKey: true,
defaultProps: { cellAs: TableCell },
});
}));
var tableElement = React__namespace.createElement(
ElementType,
tslib.__assign({}, rest, { className: classes }),
!!headerRows &&
React__namespace.createElement(TableHeader, { content: headerRows }),
!!bodyRows &&
React__namespace.createElement(TableBody, { content: bodyRows }),
!!footerRows &&
React__namespace.createElement(TableFooter, { content: footerRows })
);
return responsive
? React__namespace.createElement(
'div',
{ className: 'responsive-table' },
tableElement
)
: tableElement;
};
Table.displayName = 'Table';
Table.Body = TableBody;
Table.Cell = TableCell;
Table.Footer = TableFooter;
Table.Header = TableHeader;
Table.HeaderCell = TableHeaderCell;
Table.Row = TableRow;
module.exports = Table;