tp-react-elements 3.0.2 → 3.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/index.esm12.js +2 -2
- package/dist/_virtual/index.esm13.js +2 -2
- package/dist/_virtual/index.esm4.js +2 -2
- package/dist/_virtual/index.esm5.js +2 -2
- package/dist/_virtual/index.esm6.js +2 -2
- package/dist/components/PaginatedGrid/GenericPaginatedGrid.d.ts +27 -2
- package/dist/components/PaginatedGrid/GenericPaginatedGrid.esm.js +19 -2
- package/dist/node_modules/react-date-range/dist/components/DateInput/index.esm.js +1 -1
- package/dist/node_modules/react-date-range/dist/components/DateRange/index.esm.js +1 -1
- package/dist/node_modules/react-date-range/dist/components/DateRangePicker/index.esm.js +1 -1
- package/dist/node_modules/react-date-range/dist/components/DefinedRange/index.esm.js +1 -1
- package/dist/node_modules/react-date-range/dist/components/InputRangeField/index.esm.js +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
1
|
+
var DateInput = {};
|
|
2
2
|
|
|
3
|
-
export {
|
|
3
|
+
export { DateInput as __exports };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
1
|
+
var InputRangeField = {};
|
|
2
2
|
|
|
3
|
-
export {
|
|
3
|
+
export { InputRangeField as __exports };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
1
|
+
var DefinedRange = {};
|
|
2
2
|
|
|
3
|
-
export {
|
|
3
|
+
export { DefinedRange as __exports };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
1
|
+
var DateRangePicker = {};
|
|
2
2
|
|
|
3
|
-
export {
|
|
3
|
+
export { DateRangePicker as __exports };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
1
|
+
var DateRange = {};
|
|
2
2
|
|
|
3
|
-
export {
|
|
3
|
+
export { DateRange as __exports };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { TPColumnDef } from './types';
|
|
2
|
-
import { type TableCellProps } from '@mui/material';
|
|
2
|
+
import { type SxProps, type TableCellProps, type Theme } from '@mui/material';
|
|
3
3
|
import { type ServerFilterDef } from './DynamicFilterBar';
|
|
4
4
|
export type { ServerFilterDef };
|
|
5
5
|
export type { TPColumnDef } from './types';
|
|
@@ -217,6 +217,31 @@ export interface GenericPaginatedGridProps<TData extends object> {
|
|
|
217
217
|
column: any;
|
|
218
218
|
table: any;
|
|
219
219
|
}) => TableCellProps);
|
|
220
|
+
/**
|
|
221
|
+
* Per-row conditional styling — e.g. highlighting a row's background based
|
|
222
|
+
* on a status field. Called once per row with that row's **original data**
|
|
223
|
+
* (not the MRT `row` wrapper), so the condition logic reads naturally:
|
|
224
|
+
*
|
|
225
|
+
* ```tsx
|
|
226
|
+
* const STATUS_COLORS: Record<string, string> = {
|
|
227
|
+
* Pending: '#ffe0b2', // orange
|
|
228
|
+
* Acknowledged: '#fff9c4', // yellow
|
|
229
|
+
* Completed: '#bbdefb', // blue
|
|
230
|
+
* Released: '#c8e6c9', // green
|
|
231
|
+
* Overdue: '#f8bbd0', // pink
|
|
232
|
+
* };
|
|
233
|
+
*
|
|
234
|
+
* <GenericPaginatedGrid
|
|
235
|
+
* getRowSx={(row) => ({ backgroundColor: STATUS_COLORS[row.status] })}
|
|
236
|
+
* // ...
|
|
237
|
+
* />
|
|
238
|
+
* ```
|
|
239
|
+
*
|
|
240
|
+
* Return `undefined` (or omit a case) for rows that shouldn't be
|
|
241
|
+
* highlighted. Combines safely with row hover/selection styling — this
|
|
242
|
+
* only sets the base background, `sx` arrays layer on top.
|
|
243
|
+
*/
|
|
244
|
+
getRowSx?: (row: TData) => SxProps<Theme> | undefined;
|
|
220
245
|
/**
|
|
221
246
|
* Optional render function for expanded row detail panels.
|
|
222
247
|
* When provided, enables row expansion and renders custom content for each expanded row.
|
|
@@ -239,5 +264,5 @@ export interface GenericPaginatedGridProps<TData extends object> {
|
|
|
239
264
|
*/
|
|
240
265
|
enableExpanding?: boolean;
|
|
241
266
|
}
|
|
242
|
-
declare function GenericPaginatedGrid<TData extends object>({ columns, fetchPage, queryKey, serverFilterDefs, defaultFilters, defaultVisibleFilterIds, batchSize, exportFilename, gridId, tableHeight, tableMinHeight, tableMaxHeight, autoFillViewport, layoutMode, uiDensity, uiDensityOptions, responsiveBreakpoints, disableResponsive, pageSizeOptions, showGlobalSearchByDefault, showDensityToggle, headerBgColor, exportHeaderBgColor, exportHeaderTextColor, headerMinHeight, headerMaxHeight, headerMaxLines, headerFontSize, bodyFontSize, maxVisibleFilters, muiTableBodyCellProps: gridBodyCellProps, muiTableHeadCellProps: gridHeadCellProps, renderDetailPanel, enableExpanding, }: GenericPaginatedGridProps<TData>): import("react/jsx-runtime").JSX.Element;
|
|
267
|
+
declare function GenericPaginatedGrid<TData extends object>({ columns, fetchPage, queryKey, serverFilterDefs, defaultFilters, defaultVisibleFilterIds, batchSize, exportFilename, gridId, tableHeight, tableMinHeight, tableMaxHeight, autoFillViewport, layoutMode, uiDensity, uiDensityOptions, responsiveBreakpoints, disableResponsive, pageSizeOptions, showGlobalSearchByDefault, showDensityToggle, headerBgColor, exportHeaderBgColor, exportHeaderTextColor, headerMinHeight, headerMaxHeight, headerMaxLines, headerFontSize, bodyFontSize, maxVisibleFilters, muiTableBodyCellProps: gridBodyCellProps, muiTableHeadCellProps: gridHeadCellProps, getRowSx, renderDetailPanel, enableExpanding, }: GenericPaginatedGridProps<TData>): import("react/jsx-runtime").JSX.Element;
|
|
243
268
|
export default GenericPaginatedGrid;
|
|
@@ -273,7 +273,7 @@ const PaginationFooter = ({ pageIndex, pageSize, totalRecords, isFetching, isLoa
|
|
|
273
273
|
}, children: pageIndex + 1 }), jsx(Tooltip, { title: "Next page", children: jsx("span", { children: jsx(IconButton, { id: `${gridId}_next_page_icon`, size: "small", onClick: onNext, disabled: !canNext, sx: { p: 0.5 }, children: jsx(ChevronRightIcon, { sx: { fontSize: density.footerIconSize } }) }) }) }), jsx(Tooltip, { title: "Last page", children: jsx("span", { children: jsx(IconButton, { id: `${gridId}_last_page_icon`, size: "small", onClick: onLast, disabled: !canNext, sx: { p: 0.5 }, children: jsx(LastPageIcon, { sx: { fontSize: density.footerIconSize } }) }) }) })] })] }));
|
|
274
274
|
};
|
|
275
275
|
// ─── GenericPaginatedGrid ─────────────────────────────────────────────────────
|
|
276
|
-
function GenericPaginatedGrid({ columns, fetchPage, queryKey, serverFilterDefs, defaultFilters, defaultVisibleFilterIds, batchSize = 10000, exportFilename = 'export', gridId, tableHeight, tableMinHeight = '300px', tableMaxHeight, autoFillViewport = true, layoutMode = 'grid', uiDensity, uiDensityOptions, responsiveBreakpoints, disableResponsive = false, pageSizeOptions = [1000, 5000, 10000], showGlobalSearchByDefault = false, showDensityToggle = false, headerBgColor, exportHeaderBgColor, exportHeaderTextColor, headerMinHeight, headerMaxHeight, headerMaxLines, headerFontSize, bodyFontSize, maxVisibleFilters = 4, muiTableBodyCellProps: gridBodyCellProps, muiTableHeadCellProps: gridHeadCellProps, renderDetailPanel, enableExpanding = !!renderDetailPanel, }) {
|
|
276
|
+
function GenericPaginatedGrid({ columns, fetchPage, queryKey, serverFilterDefs, defaultFilters, defaultVisibleFilterIds, batchSize = 10000, exportFilename = 'export', gridId, tableHeight, tableMinHeight = '300px', tableMaxHeight, autoFillViewport = true, layoutMode = 'grid', uiDensity, uiDensityOptions, responsiveBreakpoints, disableResponsive = false, pageSizeOptions = [1000, 5000, 10000], showGlobalSearchByDefault = false, showDensityToggle = false, headerBgColor, exportHeaderBgColor, exportHeaderTextColor, headerMinHeight, headerMaxHeight, headerMaxLines, headerFontSize, bodyFontSize, maxVisibleFilters = 4, muiTableBodyCellProps: gridBodyCellProps, muiTableHeadCellProps: gridHeadCellProps, getRowSx, renderDetailPanel, enableExpanding = !!renderDetailPanel, }) {
|
|
277
277
|
// ── Responsive tier detection ────────────────────────────────────────────────
|
|
278
278
|
// Three tiers (desktop / tablet / mobile) drive auto density, a progressively
|
|
279
279
|
// lower filter-chip cap, toolbar wrapping, and a stacked pagination footer —
|
|
@@ -653,6 +653,13 @@ function GenericPaginatedGrid({ columns, fetchPage, queryKey, serverFilterDefs,
|
|
|
653
653
|
],
|
|
654
654
|
};
|
|
655
655
|
}, [resolvedBodyFontSize, gridBodyCellProps]);
|
|
656
|
+
// Row-level conditional highlighting (see `getRowSx` prop doc). Only wired
|
|
657
|
+
// up when the consumer actually supplies it, so grids that don't use this
|
|
658
|
+
// feature pay zero extra cost (MRT falls back to no muiTableBodyRowProps).
|
|
659
|
+
const memoizedBodyRowProps = useCallback(({ row }) => {
|
|
660
|
+
const sx = getRowSx?.(row.original);
|
|
661
|
+
return sx ? { sx } : {};
|
|
662
|
+
}, [getRowSx]);
|
|
656
663
|
// ── Memoized toolbar render functions ─────────────────────────────────────
|
|
657
664
|
// Defined with useCallback so MRT receives stable references and does not
|
|
658
665
|
// re-render the toolbar on every isFetching / data update cycle.
|
|
@@ -726,7 +733,16 @@ function GenericPaginatedGrid({ columns, fetchPage, queryKey, serverFilterDefs,
|
|
|
726
733
|
onPaginationChange: setPagination,
|
|
727
734
|
onSortingChange: setSorting,
|
|
728
735
|
onColumnFiltersChange: setColumnFilters,
|
|
729
|
-
|
|
736
|
+
// MRT's own "clear search" (X) button inside the search field calls this
|
|
737
|
+
// with `undefined` (not ''), e.g. via its internal handleClear. Normalize
|
|
738
|
+
// here so `globalFilter` is never anything but a string — code elsewhere
|
|
739
|
+
// in this component (e.g. `isFiltered`) assumes that invariant.
|
|
740
|
+
onGlobalFilterChange: (updater) => {
|
|
741
|
+
setGlobalFilter((prev) => {
|
|
742
|
+
const next = typeof updater === 'function' ? updater(prev) : updater;
|
|
743
|
+
return next ?? '';
|
|
744
|
+
});
|
|
745
|
+
},
|
|
730
746
|
onColumnPinningChange: (updater) => {
|
|
731
747
|
setColumnPinning((prev) => {
|
|
732
748
|
const next = typeof updater === 'function' ? updater(prev) : updater;
|
|
@@ -850,6 +866,7 @@ function GenericPaginatedGrid({ columns, fetchPage, queryKey, serverFilterDefs,
|
|
|
850
866
|
},
|
|
851
867
|
muiTableHeadCellProps: memoizedHeadCellProps,
|
|
852
868
|
muiTableBodyCellProps: memoizedBodyCellProps,
|
|
869
|
+
muiTableBodyRowProps: memoizedBodyRowProps,
|
|
853
870
|
muiToolbarAlertBannerProps: isError
|
|
854
871
|
? { color: 'error', children: 'Failed to load data. Please try again.' }
|
|
855
872
|
: undefined,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as DateInput } from '../../../../../_virtual/index.
|
|
1
|
+
import { __exports as DateInput } from '../../../../../_virtual/index.esm12.js';
|
|
2
2
|
import require$$0__default from 'react';
|
|
3
3
|
import { __require as requirePropTypes } from '../../../../prop-types/index.esm.js';
|
|
4
4
|
import { __require as requireClassnames } from '../../../../classnames/index.esm.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as DateRange } from '../../../../../_virtual/index.
|
|
1
|
+
import { __exports as DateRange } from '../../../../../_virtual/index.esm6.js';
|
|
2
2
|
import require$$0__default from 'react';
|
|
3
3
|
import { __require as requirePropTypes } from '../../../../prop-types/index.esm.js';
|
|
4
4
|
import { __require as requireCalendar } from '../Calendar/index.esm.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as DateRangePicker } from '../../../../../_virtual/index.
|
|
1
|
+
import { __exports as DateRangePicker } from '../../../../../_virtual/index.esm5.js';
|
|
2
2
|
import require$$0__default from 'react';
|
|
3
3
|
import { __require as requirePropTypes } from '../../../../prop-types/index.esm.js';
|
|
4
4
|
import { __require as requireDateRange } from '../DateRange/index.esm.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as DefinedRange } from '../../../../../_virtual/index.
|
|
1
|
+
import { __exports as DefinedRange } from '../../../../../_virtual/index.esm4.js';
|
|
2
2
|
import require$$0__default from 'react';
|
|
3
3
|
import { __require as requirePropTypes } from '../../../../prop-types/index.esm.js';
|
|
4
4
|
import { __require as requireStyles } from '../../styles.esm.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as InputRangeField } from '../../../../../_virtual/index.
|
|
1
|
+
import { __exports as InputRangeField } from '../../../../../_virtual/index.esm13.js';
|
|
2
2
|
import require$$0__default from 'react';
|
|
3
3
|
import { __require as requirePropTypes } from '../../../../prop-types/index.esm.js';
|
|
4
4
|
|