@appbuckets/react-ui
Version:
Just Another React UI Framework
103 lines (100 loc) • 2.72 kB
JavaScript
import * as React from 'react';
import clsx from 'clsx';
import { useRxTable } from '../RxTable.context.js';
/* --------
* Component Definition
* -------- */
var StateDependentBodyRow = function (props) {
var Content = props.Content;
// ----
// Get Context Props
// ----
var _a = useRxTable(),
classes = _a.classes,
Components = _a.Components,
columns = _a.columns,
data = _a.data,
dataState = _a.dataState,
tableData = _a.tableData,
styles = _a.styles;
// ----
// Row Render while Data is still Loading
// ----
if (dataState.isLoading) {
return React.createElement(
Components.LoaderRow,
{
className: clsx('loading-row', classes.LoaderRow),
style: styles.LoaderRow,
},
React.createElement(
Components.LoaderCell,
{
colSpan: columns.current.length,
className: clsx('loading-cell', classes.LoaderCell),
style: styles.LoaderCell,
},
React.createElement(Components.Loader, {
className: classes.Loader,
style: styles.Loader,
})
)
);
}
// ----
// Row Render while Data Load produce an Error
// ----
if (dataState.error) {
return React.createElement(
Components.ErrorRow,
{
className: clsx('error-row', classes.ErrorRow),
style: styles.ErrorRow,
},
React.createElement(
Components.ErrorCell,
{
colSpan: columns.current.length,
className: clsx('error-cell', classes.ErrorCell),
style: styles.ErrorCell,
},
React.createElement(Components.Error, {
className: classes.Error,
style: styles.Error,
})
)
);
}
// ----
// Row Render while no Data is being able to be show
// ----
if (!tableData.length) {
return React.createElement(
Components.NoContentRow,
{
className: clsx('no-content-row', classes.NoContentRow),
style: styles.NoContentCell,
},
React.createElement(
Components.NoContentCell,
{
colSpan: columns.current.length,
className: clsx('no-content-cell', classes.NoContentCell),
style: styles.NoContentCell,
},
React.createElement(Components.NoContent, {
className: classes.NoContent,
hasData: !!data.length,
hasFilteredData: !!tableData.length,
style: styles.NoContent,
})
)
);
}
// ----
// Render Default Content
// ----
return Content ? React.createElement(Content, null) : null;
};
StateDependentBodyRow.displayName = 'StateDependentBodyRow';
export { StateDependentBodyRow as default };