tp-react-elements 3.0.3 → 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.
@@ -1,3 +1,3 @@
1
- var InputRangeField = {};
1
+ var DateInput = {};
2
2
 
3
- export { InputRangeField as __exports };
3
+ export { DateInput as __exports };
@@ -1,3 +1,3 @@
1
- var Month = {};
1
+ var InputRangeField = {};
2
2
 
3
- export { Month as __exports };
3
+ export { InputRangeField as __exports };
@@ -1,3 +1,3 @@
1
- var DateInput = {};
1
+ var Month = {};
2
2
 
3
- export { DateInput as __exports };
3
+ export { Month as __exports };
@@ -1,3 +1,3 @@
1
- var DateRange = {};
1
+ var DefinedRange = {};
2
2
 
3
- export { DateRange as __exports };
3
+ export { DefinedRange as __exports };
@@ -1,3 +1,3 @@
1
- var DefinedRange = {};
1
+ var DateRange = {};
2
2
 
3
- export { DefinedRange as __exports };
3
+ export { DateRange as __exports };
@@ -2,6 +2,12 @@ import { jsx, Fragment } from 'react/jsx-runtime';
2
2
  import require$$0__default, { lazy, Suspense } from 'react';
3
3
  import FormCheckBox from '../FormComponents/FormCheckBox/FormCheckBox.esm.js';
4
4
  import FormCheckBoxGroup from '../FormComponents/FormCheckBoxGroup/FormCheckBoxGroup.esm.js';
5
+ import FormNumberField from '../FormComponents/FormNumberField/FormNumberField.esm.js';
6
+ import FormNumberFieldDecimal from '../FormComponents/FormNumberField/FormNumberFieldDecimal.esm.js';
7
+ import FormRadioGroup from '../FormComponents/FormRadioGroup/FormRadioGroup.esm.js';
8
+ import FormTextAreaField from '../FormComponents/FormTextAreaField/FormTextAreaField.esm.js';
9
+ import FormTextField from '../FormComponents/FormTextField/FormTextField.esm.js';
10
+ import PasswordField from '../FormComponents/PasswordField/PasswordField.esm.js';
5
11
  import SingleSelect from '../FormComponents/Select/SingleSelect.esm.js';
6
12
  import MultiSelectAutocomplete from '../FormComponents/Select/MultiSelectAutocomplete.esm.js';
7
13
  import SingleSelectNonAutoComplete from '../FormComponents/Select/SingleSelectNonAutoComplete.esm.js';
@@ -12,12 +18,6 @@ import DateRangePickerComponent from '../DateRangePicker/DateRangePicker.esm.js'
12
18
  import RichTextEditorWrapper from '../FormComponents/RichTextEditor/RichTextEditorWrapper.esm.js';
13
19
  import SingleSelectSearchApi from '../FormComponents/Select/SingleSelectSearchApi.esm.js';
14
20
  import DatetimepickerWrapper from '../FormComponents/DatePicker/DatetimepickerWrapper.esm.js';
15
- import FormTextAreaField from '../FormComponents/FormTextAreaField/FormTextAreaField.esm.js';
16
- import FormRadioGroup from '../FormComponents/FormRadioGroup/FormRadioGroup.esm.js';
17
- import FormNumberFieldDecimal from '../FormComponents/FormNumberField/FormNumberFieldDecimal.esm.js';
18
- import FormNumberField from '../FormComponents/FormNumberField/FormNumberField.esm.js';
19
- import PasswordField from '../FormComponents/PasswordField/PasswordField.esm.js';
20
- import FormTextField from '../FormComponents/FormTextField/FormTextField.esm.js';
21
21
 
22
22
  // Lazy-loaded heavy components
23
23
  // const RichTextEditorWrapper = lazy(() =>
@@ -1,3 +1,8 @@
1
+ export { default as FormNumberField } from './FormNumberField/FormNumberField.esm.js';
2
+ export { default as FormNumberFieldDecimal } from './FormNumberField/FormNumberFieldDecimal.esm.js';
3
+ export { default as FormTextAreaField } from './FormTextAreaField/FormTextAreaField.esm.js';
4
+ export { default as FormTextField } from './FormTextField/FormTextField.esm.js';
5
+ export { default as PasswordField } from './PasswordField/PasswordField.esm.js';
1
6
  export { default as FormCheckBox } from './FormCheckBox/FormCheckBox.esm.js';
2
7
  export { default as SingleSelect } from './Select/SingleSelect.esm.js';
3
8
  export { default as SingleSelectNonAutoComplete } from './Select/SingleSelectNonAutoComplete.esm.js';
@@ -6,20 +11,32 @@ export { default as MultiSelectV1 } from './Select/MultiSelectv1.esm.js';
6
11
  export { default as MultiSelectTable } from './Select/MultiSelectTable.esm.js';
7
12
  export { default as SearchableSelect } from './Select/SearchableSelect.esm.js';
8
13
  export { default as FormCheckBoxGroup } from './FormCheckBoxGroup/FormCheckBoxGroup.esm.js';
14
+ export { default as FormRadioGroup } from './FormRadioGroup/FormRadioGroup.esm.js';
9
15
  export { default as DatepickerWrapperV2 } from './DatePicker/DatepickerWrapperV2.esm.js';
16
+ export { default as Monthpickerrender } from './DatePicker/Monthpickerrender.esm.js';
17
+ import 'react/jsx-runtime';
18
+ import 'react';
19
+ import '@mui/material';
20
+ import '@mui/icons-material/CalendarToday';
21
+ import '@mui/icons-material/ChevronLeft';
22
+ import '@mui/icons-material/ChevronRight';
23
+ import 'react-hook-form';
10
24
  export { default as FormBottomField } from './FormBottomField/FormBottomField.esm.js';
11
- export { default as FormErrorField } from './FormErrorField/FormErrorField.esm.js';
12
- export { default as FormNumberField } from './FormNumberField/FormNumberField.esm.js';
13
- export { default as FormNumberFieldDecimal } from './FormNumberField/FormNumberFieldDecimal.esm.js';
14
- export { default as FormRadioGroup } from './FormRadioGroup/FormRadioGroup.esm.js';
25
+ import 'dayjs';
26
+ export { default as YearPickerField } from './YearPickerField/YearPickerField.esm.js';
27
+ export { default as TimePicker } from './TimePicker/TimePicker.esm.js';
15
28
  export { default as FormRenderFileUpload } from './FileUpload/FormRenderFileUpload.esm.js';
16
29
  export { default as FormRenderMultiFileUpload } from './FileUpload/FormRenderMultiFileUpload.esm.js';
17
- export { default as FormTextAreaField } from './FormTextAreaField/FormTextAreaField.esm.js';
18
- export { default as FormTextField } from './FormTextField/FormTextField.esm.js';
30
+ import '@mui/icons-material/Visibility';
31
+ import '@mui/icons-material/Close';
32
+ import '@mui/icons-material/NavigateBefore';
33
+ import '@mui/icons-material/NavigateNext';
34
+ import '@mui/icons-material/Delete';
35
+ import '@mui/icons-material/UploadFile';
36
+ import '@mui/icons-material/PictureAsPdf';
37
+ import '@mui/icons-material/TableChart';
38
+ import '@mui/icons-material/Description';
39
+ export { default as FormErrorField } from './FormErrorField/FormErrorField.esm.js';
19
40
  export { default as HelperText } from './HelperText/HelperText.esm.js';
20
- export { default as Monthpickerrender } from './DatePicker/Monthpickerrender.esm.js';
21
- export { default as PasswordField } from './PasswordField/PasswordField.esm.js';
22
41
  export { default as RichTextEditor } from './RichTextEditor/RichTextEditor.esm.js';
23
42
  export { default as RichTextEditorWrapper } from './RichTextEditor/RichTextEditorWrapper.esm.js';
24
- export { default as TimePicker } from './TimePicker/TimePicker.esm.js';
25
- export { default as YearPickerField } from './YearPickerField/YearPickerField.esm.js';
@@ -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.
@@ -859,6 +866,7 @@ function GenericPaginatedGrid({ columns, fetchPage, queryKey, serverFilterDefs,
859
866
  },
860
867
  muiTableHeadCellProps: memoizedHeadCellProps,
861
868
  muiTableBodyCellProps: memoizedBodyCellProps,
869
+ muiTableBodyRowProps: memoizedBodyRowProps,
862
870
  muiToolbarAlertBannerProps: isError
863
871
  ? { color: 'error', children: 'Failed to load data. Please try again.' }
864
872
  : undefined,
@@ -1,4 +1,4 @@
1
- import { __exports as DateInput } from '../../../../../_virtual/index.esm14.js';
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.esm4.js';
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 DefinedRange } from '../../../../../_virtual/index.esm6.js';
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.esm12.js';
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
 
@@ -1,4 +1,4 @@
1
- import { __exports as Month } from '../../../../../_virtual/index.esm13.js';
1
+ import { __exports as Month } from '../../../../../_virtual/index.esm14.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 requireDayCell } from '../DayCell/index.esm.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tp-react-elements",
3
- "version": "3.0.3",
3
+ "version": "3.0.4",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "React form components library built with React Hook Form and Yup",