drf-react-by-schema
Version:
Components and Tools for building a React App having Django Rest Framework (DRF) as server
31 lines (30 loc) • 4.85 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importDefault(require("react"));
const Box_1 = __importDefault(require("@mui/material/Box"));
const Backdrop_1 = __importDefault(require("@mui/material/Backdrop"));
const CircularProgress_1 = __importDefault(require("@mui/material/CircularProgress"));
const DataGridBySchemaEditable_1 = __importDefault(require("./DataGridBySchemaEditable"));
const DataTotals_1 = __importDefault(require("./DataTotals"));
const DataTotalsServer_1 = __importDefault(require("./DataTotalsServer"));
const APIWrapperContext_1 = require("../context/APIWrapperContext");
const styles_1 = require("../styles");
const utils_1 = require("../utils");
function GenericRelatedModelListTable({ data, columnVisibilityModel, relatedModel, model, loading, id, indexField, indexFieldBasePath, indexFieldViewBasePath, addExistingModel, isEditable, onEditModel, finalCustomColumnOperations, setVisibleRows, visibleRows, isAutoHeight, hideFooterPagination, hideFooterComponent, hideToolbarComponent, hideColumnsButton, hideFilterButton, hideDensityButton, hideExportButton, hideQuickFilterBar, onProcessRow, onDataChange, sumRows, paginationMode = 'client', paginationModel, setPaginationModel, hasBulkSelect, onSelectActions, tableAutoHeight, actions, customActions, optionsAC, defaultValues, LinkComponent, extraValidators, MobileListRenderItem, MobileRenderNoResults, }) {
const { isMobile } = (0, APIWrapperContext_1.useAPIWrapper)();
return (react_1.default.createElement(react_1.default.Fragment, null,
data.columns ? (react_1.default.createElement(react_1.default.Fragment, null,
data.data.length > 0 && isMobile && MobileListRenderItem && (react_1.default.createElement(react_1.default.Fragment, null, paginationMode === 'client' ? (react_1.default.createElement(DataTotals_1.default, { schema: data.schema, data: data.data, sumRows: sumRows, visibleRows: visibleRows })) : (react_1.default.createElement(DataTotalsServer_1.default, { schema: data.schema, sumRows: sumRows, totals: data.sumRowsTotals })))),
react_1.default.createElement(Box_1.default, { sx: tableAutoHeight ? {} : styles_1.Layout.dataGridFixedHeight },
react_1.default.createElement(DataGridBySchemaEditable_1.default, { data: data.data, columns: data.columns, columnVisibilityModel: columnVisibilityModel, schema: data.schema, model: relatedModel, modelParent: model, modelParentId: id, loading: loading, indexField: indexField, indexFieldBasePath: indexFieldBasePath, indexFieldViewBasePath: indexFieldViewBasePath, addExistingModel: addExistingModel, isEditable: isEditable, hasBulkSelect: hasBulkSelect, onSelectActions: onSelectActions, onEditModel: onEditModel, isAutoHeight: isAutoHeight, tableAutoHeight: tableAutoHeight, customColumnOperations: finalCustomColumnOperations, setVisibleRows: setVisibleRows, hideFooterPagination: hideFooterPagination, hideFooterComponent: hideFooterComponent, hideToolbarComponent: hideToolbarComponent, hideColumnsButton: hideColumnsButton, hideFilterButton: hideFilterButton, hideDensityButton: hideDensityButton, hideExportButton: hideExportButton, hideQuickFilterBar: hideQuickFilterBar, actions: actions, customActions: customActions, optionsAC: optionsAC, defaultValues: defaultValues, onProcessRow: onProcessRow, onDataChange: onDataChange, paginationModel: paginationMode === 'server' ? paginationModel : undefined, setPaginationModel: paginationMode === 'server' ? setPaginationModel : undefined, rowCount: paginationMode === 'client'
? undefined
: typeof data.rowCount !== undefined
? data.rowCount
: 0, LinkComponent: LinkComponent || undefined, extraValidators: extraValidators, MobileListRenderItem: MobileListRenderItem, MobileRenderNoResults: MobileRenderNoResults })))) : (react_1.default.createElement(Backdrop_1.default, { invisible: true, sx: { color: '#fff', zIndex: (theme) => theme.zIndex.drawer + 1 }, open: loading || false },
react_1.default.createElement(CircularProgress_1.default, null))),
data.data.length > 0 && (!isMobile || !MobileListRenderItem) && (react_1.default.createElement(react_1.default.Fragment, null, paginationMode === 'client' ? (react_1.default.createElement(DataTotals_1.default, { schema: data.schema, data: data.data, sumRows: sumRows, visibleRows: visibleRows })) : (react_1.default.createElement(DataTotalsServer_1.default, { schema: data.schema, sumRows: sumRows, totals: data.sumRowsTotals }))))));
}
exports.default = react_1.default.memo(GenericRelatedModelListTable, utils_1.shouldMemoUpdate);