tp-react-elements 2.0.7 → 3.0.1

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.
Files changed (43) hide show
  1. package/dist/_virtual/index.esm11.js +2 -2
  2. package/dist/_virtual/index.esm12.js +2 -2
  3. package/dist/_virtual/index.esm13.js +2 -2
  4. package/dist/_virtual/index.esm14.js +2 -2
  5. package/dist/_virtual/index.esm4.js +2 -2
  6. package/dist/_virtual/index.esm5.js +2 -2
  7. package/dist/_virtual/index.esm6.js +2 -2
  8. package/dist/components/Button/Button.esm.js +9 -5
  9. package/dist/components/DatePicker/index.d.ts +1 -0
  10. package/dist/components/DatePicker/index.esm.js +2 -1
  11. package/dist/components/DeleteComponent/DeleteField.esm.js +20 -14
  12. package/dist/components/Form/FormActiveSwitch.esm.js +5 -1
  13. package/dist/components/Form/FormConstants.esm.js +1 -0
  14. package/dist/components/Form/FormRender.esm.js +14 -10
  15. package/dist/components/Form/FormRenderWrapper.esm.js +2 -2
  16. package/dist/components/FormComponents/DatePicker/MonthPickerMultiRender.d.ts +6 -0
  17. package/dist/components/FormComponents/DatePicker/MonthPickerMultiRender.esm.js +117 -0
  18. package/dist/components/FormComponents/DatePicker/Monthpickerrender.esm.js +6 -4
  19. package/dist/components/FormComponents/FileUpload/MultiFileWithPreview.esm.js +38 -6
  20. package/dist/components/FormComponents/FormCheckBoxGroup/FormCheckBoxGroup.esm.js +11 -8
  21. package/dist/components/FormComponents/FormRadioGroup/FormRadioGroup.esm.js +14 -12
  22. package/dist/components/FormComponents/Select/MultiSelectTable.esm.js +176 -160
  23. package/dist/components/FormComponents/Select/MultiSelectv1.esm.js +2 -2
  24. package/dist/components/FormComponents/index.esm.js +16 -22
  25. package/dist/components/ModalField/ConfirmationDialog.esm.js +37 -37
  26. package/dist/components/ModalField/ModalField.esm.js +19 -16
  27. package/dist/components/PaginatedGrid/DynamicFilterBar.d.ts +12 -4
  28. package/dist/components/PaginatedGrid/DynamicFilterBar.esm.js +48 -16
  29. package/dist/components/PaginatedGrid/GenericPaginatedGrid.d.ts +8 -1
  30. package/dist/components/PaginatedGrid/GenericPaginatedGrid.esm.js +80 -20
  31. package/dist/components/PaginatedGrid/types.d.ts +25 -0
  32. package/dist/components/SelectField/MultiSelectFieldComponent.esm.js +19 -21
  33. package/dist/node_modules/react-date-range/dist/components/Calendar/index.esm.js +2 -2
  34. package/dist/node_modules/react-date-range/dist/components/DateInput/index.esm.js +3 -3
  35. package/dist/node_modules/react-date-range/dist/components/DateRange/index.esm.js +3 -3
  36. package/dist/node_modules/react-date-range/dist/components/DateRangePicker/index.esm.js +3 -3
  37. package/dist/node_modules/react-date-range/dist/components/DayCell/index.esm.js +3 -3
  38. package/dist/node_modules/react-date-range/dist/components/DefinedRange/index.esm.js +3 -3
  39. package/dist/node_modules/react-date-range/dist/components/InputRangeField/index.esm.js +3 -3
  40. package/dist/node_modules/react-date-range/dist/components/Month/index.esm.js +3 -3
  41. package/dist/node_modules/react-list/react-list.esm.js +2 -2
  42. package/dist/utils/Interface/FormInterface.d.ts +1 -1
  43. package/package.json +2 -2
@@ -253,15 +253,28 @@ const MultiSelectFilterChip = ({ label, selectedValues, options, onApply, onRemo
253
253
  const [anchor, setAnchor] = useState(null);
254
254
  // Draft is only committed on Apply — prevents an API call per checkbox tick.
255
255
  const [draft, setDraft] = useState([]);
256
+ const [search, setSearch] = useState('');
256
257
  const active = selectedValues.length > 0;
257
258
  const openPopover = (e) => {
258
259
  setDraft(selectedValues); // always start from the committed state
260
+ setSearch(''); // always start with all options visible
259
261
  setAnchor(e.currentTarget);
260
262
  };
261
263
  const toggleDraft = (value) => setDraft((prev) => prev.includes(value) ? prev.filter((v) => v !== value) : [...prev, value]);
262
- const allSelected = draft.length === options.length && options.length > 0;
263
- const someSelected = draft.length > 0 && !allSelected;
264
- const toggleAll = () => setDraft(allSelected ? [] : options.map((o) => o.value));
264
+ // Case-insensitive filter — same pattern as SearchableSelectChip.
265
+ const filteredOptions = search
266
+ ? options.filter((o) => o.label.toLowerCase().includes(search.toLowerCase()))
267
+ : options;
268
+ // "All" reflects/toggles only the currently visible (filtered) options —
269
+ // degrades to the original whole-list behaviour when search is empty.
270
+ const allSelected = filteredOptions.length > 0 && filteredOptions.every((o) => draft.includes(o.value));
271
+ const someSelected = !allSelected && filteredOptions.some((o) => draft.includes(o.value));
272
+ const toggleAll = () => setDraft((prev) => {
273
+ const filteredValues = filteredOptions.map((o) => o.value);
274
+ return allSelected
275
+ ? prev.filter((v) => !filteredValues.includes(v))
276
+ : [...new Set([...prev, ...filteredValues])];
277
+ });
265
278
  const handleApply = () => {
266
279
  onApply(draft);
267
280
  setAnchor(null);
@@ -284,19 +297,22 @@ const MultiSelectFilterChip = ({ label, selectedValues, options, onApply, onRemo
284
297
  px: 2, py: 0.75,
285
298
  display: 'flex', alignItems: 'center', justifyContent: 'space-between',
286
299
  borderBottom: '1px solid', borderColor: 'divider',
287
- }, children: [jsx(Typography, { sx: { fontSize: 11, color: draft.length > 0 ? 'primary.main' : 'text.secondary', fontWeight: draft.length > 0 ? 600 : 400 }, children: draft.length > 0 ? `${draft.length} of ${options.length} selected` : 'Select options' }), draft.length > 0 && (jsx(Button, { size: "small", color: "inherit", sx: { fontSize: 11, py: 0, textTransform: 'none', minWidth: 'auto' }, onClick: () => setDraft([]), children: "Clear all" }))] }), jsxs(ListItemButton, { onClick: toggleAll, sx: { px: 1, py: 0.25 }, children: [jsx(Checkbox, { checked: allSelected, indeterminate: someSelected, size: "small", disableRipple: true, sx: { p: 0.5, mr: 0.5, '& .MuiSvgIcon-root': { fontSize: 16 } } }), jsx(ListItemText, { primary: "All", primaryTypographyProps: {
300
+ }, children: [jsx(Typography, { sx: { fontSize: 11, color: draft.length > 0 ? 'primary.main' : 'text.secondary', fontWeight: draft.length > 0 ? 600 : 400 }, children: draft.length > 0 ? `${draft.length} of ${options.length} selected` : 'Select options' }), draft.length > 0 && (jsx(Button, { size: "small", color: "inherit", sx: { fontSize: 11, py: 0, textTransform: 'none', minWidth: 'auto' }, onClick: () => setDraft([]), children: "Clear all" }))] }), jsx(Box, { sx: { px: 1.5, pt: 1, pb: 0.5 }, children: jsx(TextField, { size: "small", fullWidth: true, autoFocus: true, placeholder: "Search\u2026", value: search, onChange: (e) => setSearch(e.target.value), onKeyDown: (e) => { if (e.key === 'Escape')
301
+ setAnchor(null); }, InputProps: {
302
+ startAdornment: (jsx(InputAdornment, { position: "start", children: jsx(SearchIcon, { sx: { fontSize: 16, color: 'text.disabled' } }) })),
303
+ }, sx: { '& .MuiOutlinedInput-root': { borderRadius: 2, fontSize: 13 } } }) }), jsxs(ListItemButton, { onClick: toggleAll, sx: { px: 1, py: 0.25 }, children: [jsx(Checkbox, { checked: allSelected, indeterminate: someSelected, size: "small", disableRipple: true, sx: { p: 0.5, mr: 0.5, '& .MuiSvgIcon-root': { fontSize: 16 } } }), jsx(ListItemText, { primary: "All", primaryTypographyProps: {
288
304
  fontSize: 13,
289
305
  fontStyle: 'italic',
290
306
  color: allSelected || someSelected ? 'primary.main' : 'text.secondary',
291
307
  fontWeight: allSelected ? 600 : 400,
292
- } })] }), jsx(Divider, {}), jsx(List, { dense: true, disablePadding: true, sx: { maxHeight: 240, overflowY: 'auto', py: 0.5 }, children: options.map((opt) => {
308
+ } })] }), jsx(Divider, {}), jsx(List, { dense: true, disablePadding: true, sx: { maxHeight: 240, overflowY: 'auto', py: 0.5 }, children: filteredOptions.length === 0 ? (jsx(Box, { sx: { px: 2, py: 1.5 }, children: jsxs(Typography, { variant: "caption", color: "text.disabled", children: ["No options match \"", search, "\""] }) })) : (filteredOptions.map((opt) => {
293
309
  const checked = draft.includes(opt.value);
294
310
  return (jsxs(ListItemButton, { onClick: () => toggleDraft(opt.value), sx: { px: 1, py: 0.25 }, children: [jsx(Checkbox, { checked: checked, size: "small", disableRipple: true, sx: { p: 0.5, mr: 0.5, '& .MuiSvgIcon-root': { fontSize: 16 } } }), jsx(ListItemText, { primary: opt.label, primaryTypographyProps: {
295
311
  fontSize: 13,
296
312
  color: checked ? 'primary.main' : 'text.primary',
297
313
  fontWeight: checked ? 600 : 400,
298
314
  } })] }, opt.value));
299
- }) }), jsx(Box, { sx: {
315
+ })) }), jsx(Box, { sx: {
300
316
  px: 1.5, py: 1,
301
317
  display: 'flex', justifyContent: 'flex-end',
302
318
  borderTop: '1px solid', borderColor: 'divider',
@@ -304,14 +320,19 @@ const MultiSelectFilterChip = ({ label, selectedValues, options, onApply, onRemo
304
320
  };
305
321
  // ─── MonthPickerChip ─────────────────────────────────────────────────────────
306
322
  //
307
- // Multi-month selection chip. Users navigate by year and tick individual months.
308
- // Draft changes are buffered locally; `onApply` is called once when Apply is
309
- // clicked (single API call per filter action).
323
+ // By default a multi-month selection chip: users navigate by year and tick
324
+ // individual months, draft changes are buffered locally, and `onApply` is
325
+ // called once when Apply is clicked (single API call per filter action).
310
326
  //
311
- // Value format: comma-separated "YYYY-MM" strings, e.g. "2025-01,2025-03".
327
+ // Pass `single` to restrict to one month at a time — clicking a month then
328
+ // immediately applies + closes the popover instead of buffering, matching
329
+ // the other single-value chips (e.g. DatePickerChip).
330
+ //
331
+ // Value format: comma-separated "YYYY-MM" strings, e.g. "2025-01,2025-03"
332
+ // (or just "2025-01" when `single` is set).
312
333
  // ─────────────────────────────────────────────────────────────────────────────
313
334
  const MONTH_LABELS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
314
- const MonthPickerChip = ({ label, value, onApply, onRemove, chipStyle, baseId }) => {
335
+ const MonthPickerChip = ({ label, value, onApply, onRemove, chipStyle, baseId, single = false }) => {
315
336
  const parseYMs = (v) => v ? v.split(',').filter(Boolean) : [];
316
337
  const [anchor, setAnchor] = useState(null);
317
338
  const [viewYear, setViewYear] = useState(() => new Date().getFullYear());
@@ -328,7 +349,18 @@ const MonthPickerChip = ({ label, value, onApply, onRemove, chipStyle, baseId })
328
349
  }
329
350
  setAnchor(e.currentTarget);
330
351
  };
331
- const toggleMonth = (ym) => setDraft((prev) => prev.includes(ym) ? prev.filter((v) => v !== ym) : [...prev, ym]);
352
+ const toggleMonth = (ym) => {
353
+ if (single) {
354
+ // Clicking the already-selected month clears it; otherwise replace
355
+ // the selection and commit immediately (no Apply button in this mode).
356
+ const next = draft.includes(ym) ? [] : [ym];
357
+ setDraft(next);
358
+ onApply(next.join(','));
359
+ setAnchor(null);
360
+ return;
361
+ }
362
+ setDraft((prev) => prev.includes(ym) ? prev.filter((v) => v !== ym) : [...prev, ym]);
363
+ };
332
364
  const handleApply = () => {
333
365
  // Sort selected months chronologically before storing
334
366
  onApply([...draft].sort().join(','));
@@ -365,15 +397,15 @@ const MonthPickerChip = ({ label, value, onApply, onRemove, chipStyle, baseId })
365
397
  borderColor: isSelected ? 'primary.main' : 'divider',
366
398
  fontWeight: isSelected ? 700 : 400,
367
399
  }, children: mon }, ym));
368
- }) }), draft.length > 0 && (jsxs(Box, { sx: {
400
+ }) }), !single && draft.length > 0 && (jsxs(Box, { sx: {
369
401
  px: 2, py: 0.75,
370
402
  display: 'flex', alignItems: 'center', justifyContent: 'space-between',
371
403
  borderTop: '1px solid', borderColor: 'divider',
372
- }, children: [jsxs(Typography, { sx: { fontSize: 11, color: 'primary.main', fontWeight: 600 }, children: [draft.length, " month", draft.length > 1 ? 's' : '', " selected"] }), jsx(Button, { size: "small", color: "inherit", sx: { fontSize: 11, py: 0, textTransform: 'none', minWidth: 'auto' }, onClick: () => setDraft([]), children: "Clear" })] })), jsx(Box, { sx: {
404
+ }, children: [jsxs(Typography, { sx: { fontSize: 11, color: 'primary.main', fontWeight: 600 }, children: [draft.length, " month", draft.length > 1 ? 's' : '', " selected"] }), jsx(Button, { size: "small", color: "inherit", sx: { fontSize: 11, py: 0, textTransform: 'none', minWidth: 'auto' }, onClick: () => setDraft([]), children: "Clear" })] })), !single && (jsx(Box, { sx: {
373
405
  px: 1.5, py: 1,
374
406
  display: 'flex', justifyContent: 'flex-end',
375
407
  borderTop: '1px solid', borderColor: 'divider',
376
- }, children: jsx(Button, { size: "small", variant: "contained", disableElevation: true, onClick: handleApply, children: "Apply" }) })] })] }));
408
+ }, children: jsx(Button, { size: "small", variant: "contained", disableElevation: true, onClick: handleApply, children: "Apply" }) }))] })] }));
377
409
  };
378
410
  const GlobalSearchInput = memo(({ value, onChange, chipStyle, placeholder = 'Search…' }) => {
379
411
  const [draft, setDraft] = useState(value);
@@ -531,7 +563,7 @@ const DynamicFilterBar = ({ serverFilterDefs, visibleFilterIds, onToggleFilter,
531
563
  }), onRemove: () => removeFilter(id), chipStyle: chipStyle, baseId: gridId ? `${gridId}_${id}` : undefined }, id));
532
564
  }
533
565
  if (def?.type === 'monthPicker') {
534
- return (jsx(MonthPickerChip, { label: def.label, value: filterValues[def.filterKey] ?? '', onApply: (v) => onFilterValuesChange({ ...filterValues, [def.filterKey]: v }), onRemove: () => removeFilter(id), chipStyle: chipStyle, baseId: gridId ? `${gridId}_${id}` : undefined }, id));
566
+ return (jsx(MonthPickerChip, { label: def.label, value: filterValues[def.filterKey] ?? '', onApply: (v) => onFilterValuesChange({ ...filterValues, [def.filterKey]: v }), onRemove: () => removeFilter(id), chipStyle: chipStyle, baseId: gridId ? `${gridId}_${id}` : undefined, single: def.single }, id));
535
567
  }
536
568
  if (def?.type === 'date') {
537
569
  return (jsx(DatePickerChip, { label: def.label, value: getColValue(def.columnKey), onApply: (v) => applyColFilter(def.columnKey, v), onRemove: () => removeFilter(id), chipStyle: chipStyle, baseId: gridId ? `${gridId}_${id}` : undefined }, id));
@@ -126,6 +126,13 @@ export interface GenericPaginatedGridProps<TData extends object> {
126
126
  * Default: `false`.
127
127
  */
128
128
  showGlobalSearchByDefault?: boolean;
129
+ /**
130
+ * Show the "Toggle density" icon (Show/Hide Columns row) in the top-right
131
+ * toolbar actions. Default: `false` (hidden) — the grid's own `uiDensity`
132
+ * prop already controls row/header density, so this MRT-native toggle is
133
+ * usually redundant.
134
+ */
135
+ showDensityToggle?: boolean;
129
136
  /**
130
137
  * Background colour applied to every header cell.
131
138
  * Accepts any valid CSS colour string.
@@ -232,5 +239,5 @@ export interface GenericPaginatedGridProps<TData extends object> {
232
239
  */
233
240
  enableExpanding?: boolean;
234
241
  }
235
- 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, headerBgColor, exportHeaderBgColor, exportHeaderTextColor, headerMinHeight, headerMaxHeight, headerMaxLines, headerFontSize, bodyFontSize, maxVisibleFilters, muiTableBodyCellProps: gridBodyCellProps, muiTableHeadCellProps: gridHeadCellProps, renderDetailPanel, enableExpanding, }: GenericPaginatedGridProps<TData>): import("react/jsx-runtime").JSX.Element;
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;
236
243
  export default GenericPaginatedGrid;
@@ -2,7 +2,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { useMemo, useState, useRef, useLayoutEffect, useCallback, useEffect } from 'react';
3
3
  import { MRT_ToggleGlobalFilterButton, MRT_ShowHideColumnsButton, MRT_ToggleDensePaddingButton, MRT_ToggleFullScreenButton, useMaterialReactTable, MaterialReactTable } from 'material-react-table';
4
4
  import { useQuery, keepPreviousData } from '@tanstack/react-query';
5
- import { Box, Tooltip, IconButton, GlobalStyles, Typography, Select, MenuItem, Skeleton, CircularProgress } from '@mui/material';
5
+ import { Box, Tooltip, IconButton, GlobalStyles, Typography, Select, MenuItem, Skeleton } from '@mui/material';
6
6
  import RefreshIcon from '@mui/icons-material/Refresh';
7
7
  import FileDownloadIcon from '@mui/icons-material/FileDownload';
8
8
  import FirstPageIcon from '@mui/icons-material/FirstPage';
@@ -12,6 +12,11 @@ import ChevronRightIcon from '@mui/icons-material/ChevronRight';
12
12
  import DynamicFilterBar from './DynamicFilterBar.esm.js';
13
13
  import { getXLSX } from '../../utils/Constants/xlsx-js-style.esm.js';
14
14
 
15
+ // MRT's default overscan (rows rendered outside the visible viewport) is
16
+ // modest; bumping it reduces blank-row flash during fast wheel-scrolling
17
+ // through large virtualized batches. Static (no prop dependency), so it's
18
+ // hoisted for a stable reference across renders.
19
+ const ROW_VIRTUALIZER_OPTIONS = { overscan: 8 };
15
20
  const UI_DENSITY_PRESETS = {
16
21
  default: {
17
22
  footerMinHeight: 48,
@@ -186,19 +191,19 @@ const buildHeaderCellSx = (align, headerMin, headerMax, headerFont, headerBgColo
186
191
  },
187
192
  };
188
193
  };
189
- // ─── Internal: overlay loader ─────────────────────────────────────────────────
190
- const OverlayLoader = ({ message }) => (jsxs(Box, { sx: {
194
+ // ─── Internal: skeleton loader ────────────────────────────────────────────────
195
+ //
196
+ // Used for BOTH loading states:
197
+ // - Initial load (isLoading, no data on screen yet) → opaque background
198
+ // - Refetch with existing data (isFetching, page/filter/sort change)
199
+ // → translucent + blurred so the stale rows are still faintly visible
200
+ // underneath, matching the previous OverlayLoader's backdrop treatment
201
+ // but with skeleton rows instead of a generic spinner.
202
+ const SkeletonOverlay = ({ columnCount, rowCount = 10, translucent = false, }) => (jsx(Box, { sx: {
191
203
  position: 'absolute', inset: 0,
192
204
  display: 'flex', flexDirection: 'column',
193
- alignItems: 'center', justifyContent: 'center',
194
- bgcolor: 'rgba(255,255,255,0.80)', backdropFilter: 'blur(2px)',
195
- zIndex: 10, gap: 1.5,
196
- }, children: [jsx(CircularProgress, { size: 50, thickness: 4 }), jsx(Typography, { variant: "body2", color: "text.secondary", fontWeight: 500, children: message })] }));
197
- // ─── Internal: skeleton loader (initial load — no data on screen yet) ────────
198
- const SkeletonOverlay = ({ columnCount, rowCount = 10, }) => (jsx(Box, { sx: {
199
- position: 'absolute', inset: 0,
200
- display: 'flex', flexDirection: 'column',
201
- bgcolor: 'background.paper',
205
+ bgcolor: translucent ? 'rgba(255,255,255,0.80)' : 'background.paper',
206
+ ...(translucent ? { backdropFilter: 'blur(2px)' } : {}),
202
207
  zIndex: 10, p: 1.5, gap: 1,
203
208
  overflow: 'hidden',
204
209
  }, children: Array.from({ length: rowCount }).map((_, rowIdx) => (jsx(Box, { sx: { display: 'flex', gap: 1.5 }, children: Array.from({ length: Math.max(columnCount, 1) }).map((_, colIdx) => (jsx(Skeleton, { variant: "rounded", height: 28, sx: { flex: 1, minWidth: 0 }, animation: "wave" }, colIdx))) }, rowIdx))) }));
@@ -257,7 +262,7 @@ const PaginationFooter = ({ pageIndex, pageSize, totalRecords, isFetching, isLoa
257
262
  }, 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 } }) }) }) })] })] }));
258
263
  };
259
264
  // ─── GenericPaginatedGrid ─────────────────────────────────────────────────────
260
- 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, headerBgColor, exportHeaderBgColor, exportHeaderTextColor, headerMinHeight, headerMaxHeight, headerMaxLines, headerFontSize, bodyFontSize, maxVisibleFilters = 4, muiTableBodyCellProps: gridBodyCellProps, muiTableHeadCellProps: gridHeadCellProps, renderDetailPanel, enableExpanding = !!renderDetailPanel, }) {
265
+ 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, }) {
261
266
  // ── Responsive tier detection ────────────────────────────────────────────────
262
267
  // Three tiers (desktop / tablet / mobile) drive auto density, a progressively
263
268
  // lower filter-chip cap, toolbar wrapping, and a stacked pagination footer —
@@ -393,14 +398,15 @@ function GenericPaginatedGrid({ columns, fetchPage, queryKey, serverFilterDefs,
393
398
  const totalRecords = data?.totalRecords ?? 0;
394
399
  // ── Strip custom props + auto-inject filterFn before passing to MRT ──────────
395
400
  //
396
- // `TPColumnDef` extends `MRT_ColumnDef` with `filterType` and `options`.
397
- // MRT doesn't know these props, so we strip them here. We also inject the
398
- // appropriate `filterFn` automatically so callers never have to write one.
401
+ // `TPColumnDef` extends `MRT_ColumnDef` with `filterType`, `options`, and
402
+ // `getSearchText`. MRT doesn't know these props, so we strip them here. We
403
+ // also inject the appropriate `filterFn` automatically so callers never
404
+ // have to write one.
399
405
  const processedColumns = useMemo(() => {
400
406
  const allowGrow = layoutMode === 'grid' || layoutMode === 'semantic';
401
407
  return columns.map((col) => {
402
408
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
403
- const { filterType, options, ...mrtCol } = col;
409
+ const { filterType, options, getSearchText, ...mrtCol } = col;
404
410
  if (allowGrow && mrtCol.grow === undefined) {
405
411
  mrtCol.grow = true;
406
412
  }
@@ -430,6 +436,41 @@ function GenericPaginatedGrid({ columns, fetchPage, queryKey, serverFilterDefs,
430
436
  return mrtCol;
431
437
  });
432
438
  }, [columns, layoutMode]);
439
+ // ── Global Search: match formatted `Cell` text, not just the raw value ───────
440
+ //
441
+ // MRT's built-in global filter always compares against `row.getValue(columnId)`
442
+ // (the raw accessor value) and never against what `Cell` renders. A column
443
+ // whose `Cell` formats/maps that value for display (dates, currency, status
444
+ // labels, …) is therefore unsearchable by the text a user actually sees —
445
+ // typing "01 Jul 2026" finds nothing because the raw value is really
446
+ // "2026-07-01T00:00:00". `getSearchText` on `TPColumnDef` lets a column opt
447
+ // in to being matched against its formatted representation instead.
448
+ const searchTextGetters = useMemo(() => {
449
+ const map = new Map();
450
+ columns.forEach((col) => {
451
+ const getSearchText = col.getSearchText;
452
+ if ('accessorKey' in col && col.accessorKey && typeof getSearchText === 'function') {
453
+ map.set(col.accessorKey, getSearchText);
454
+ }
455
+ });
456
+ return map;
457
+ }, [columns]);
458
+ const tpGlobalSearchFn = useCallback((row, columnId, filterValue) => {
459
+ const needle = String(filterValue ?? '').trim().toLowerCase();
460
+ if (!needle)
461
+ return true;
462
+ const getSearchText = searchTextGetters.get(columnId);
463
+ const value = getSearchText ? getSearchText(row.original) : row.getValue(columnId);
464
+ if (value === null || value === undefined)
465
+ return false;
466
+ return String(value).toLowerCase().includes(needle);
467
+ }, [searchTextGetters]);
468
+ // Stable references for the two table options below — recreating either
469
+ // per render would defeat the memoization on every other MRT callback
470
+ // (see docs/arch-performance.mdx: all function/object props passed into
471
+ // useMaterialReactTable must be memoized).
472
+ const tpFilterFns = useMemo(() => ({ tpGlobalSearch: tpGlobalSearchFn }), [tpGlobalSearchFn]);
473
+ const getColumnCanGlobalFilter = useCallback(() => true, []);
433
474
  // ── Derive column list for filter chip picker ──────────────────────────────
434
475
  //
435
476
  // A column is excluded from the "Column Filters" section of Manage Filters
@@ -596,7 +637,7 @@ function GenericPaginatedGrid({ columns, fetchPage, queryKey, serverFilterDefs,
596
637
  filterValues, handleFilterValuesChange, columnFilters, setColumnFilters,
597
638
  availableColumns, effectiveMaxVisibleFilters, densityTokens, handleToggleFilter,
598
639
  ]);
599
- const renderToolbarInternalActions = useCallback(({ table: t }) => (jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 0.5 }, children: [jsx(MRT_ToggleGlobalFilterButton, { table: t, id: `${resolvedGridId}_global_search_icon` }), jsx(MRT_ShowHideColumnsButton, { table: t, id: `${resolvedGridId}_columns_icon` }), jsx(MRT_ToggleDensePaddingButton, { table: t, id: `${resolvedGridId}_density_icon` }), jsx(MRT_ToggleFullScreenButton, { table: t, id: `${resolvedGridId}_fullscreen_icon` })] })), [resolvedGridId]);
640
+ const renderToolbarInternalActions = useCallback(({ table: t }) => (jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 0.5 }, children: [jsx(MRT_ToggleGlobalFilterButton, { table: t, id: `${resolvedGridId}_global_search_icon` }), jsx(MRT_ShowHideColumnsButton, { table: t, id: `${resolvedGridId}_columns_icon` }), showDensityToggle && (jsx(MRT_ToggleDensePaddingButton, { table: t, id: `${resolvedGridId}_density_icon` })), jsx(MRT_ToggleFullScreenButton, { table: t, id: `${resolvedGridId}_fullscreen_icon` })] })), [resolvedGridId, showDensityToggle]);
600
641
  const renderBottomToolbar = useCallback(({ table: t }) => (jsx(PaginationFooter, { pageIndex: t.getState().pagination.pageIndex, pageSize: t.getState().pagination.pageSize, totalRecords: totalRecords, isFetching: isFetching, isLoading: isLoading, canPrev: t.getCanPreviousPage() && !isFetching, canNext: t.getCanNextPage() && !isFetching, onFirst: () => t.firstPage(), onPrev: () => t.previousPage(), onNext: () => t.nextPage(), onLast: () => t.lastPage(), onPageSizeChange: (s) => t.setPageSize(s), pageSizeOptions: pageSizeOptions, density: densityTokens, gridId: resolvedGridId, isStacked: isMobileTier })), [totalRecords, isFetching, isLoading, pageSizeOptions, densityTokens, resolvedGridId, isMobileTier]);
601
642
  // ── Table instance ─────────────────────────────────────────────────────────
602
643
  const table = useMaterialReactTable({
@@ -676,11 +717,30 @@ function GenericPaginatedGrid({ columns, fetchPage, queryKey, serverFilterDefs,
676
717
  enableFilters: true,
677
718
  enableColumnFilters: false,
678
719
  enableGlobalFilter: true,
679
- enableDensityToggle: true,
720
+ // Custom global filter (see `tpGlobalSearchFn` above) so columns with a
721
+ // formatting `Cell` are matched by their displayed text, not just the
722
+ // raw accessor value. Registered under `filterFns` and selected by name
723
+ // via `globalFilterFn` — MRT resolves `globalFilterFn` strings against
724
+ // this map rather than accepting a function directly.
725
+ filterFns: tpFilterFns,
726
+ globalFilterFn: 'tpGlobalSearch',
727
+ // MRT's default `getColumnCanGlobalFilter` only allows a column into
728
+ // Global Search when the very first fetched row's raw value happens to
729
+ // be a `string`/`number` — a null/undefined first row silently drops
730
+ // that column from search entirely. Our filterFn already handles
731
+ // null/undefined per-row, so allow every column (columns can still opt
732
+ // out individually via `enableGlobalFilter: false`).
733
+ getColumnCanGlobalFilter,
734
+ enableDensityToggle: showDensityToggle,
680
735
  enableFullScreenToggle: true,
681
736
  enableHiding: true,
682
737
  enableStickyHeader: true,
683
738
  enableRowVirtualization: true,
739
+ // A larger overscan renders more off-screen rows up front, reducing the
740
+ // brief blank-row flash that can appear when scrolling quickly through
741
+ // a large in-memory batch (rows are already fetched — virtualization
742
+ // only governs what's mounted to the DOM at any given moment).
743
+ rowVirtualizerOptions: ROW_VIRTUALIZER_OPTIONS,
684
744
  initialState: {
685
745
  density: densityTokens.mrtDensity,
686
746
  showGlobalFilter: showGlobalSearchByDefault,
@@ -774,7 +834,7 @@ function GenericPaginatedGrid({ columns, fetchPage, queryKey, serverFilterDefs,
774
834
  display: 'flex',
775
835
  flexDirection: 'column',
776
836
  overflow: 'hidden',
777
- }, children: [jsx(GlobalStyles, { styles: tableStyleOverrides }), isLoading && jsx(SkeletonOverlay, { columnCount: processedColumns.length }), !isLoading && isFetching && jsx(OverlayLoader, { message: "Updating data\u2026" }), jsx(Box, { sx: { flex: 1, minHeight: 0, display: 'flex', flexDirection: 'column', overflow: 'hidden' }, children: jsx(MaterialReactTable, { table: table }) })] }));
837
+ }, children: [jsx(GlobalStyles, { styles: tableStyleOverrides }), isLoading && jsx(SkeletonOverlay, { columnCount: processedColumns.length }), !isLoading && isFetching && (jsx(SkeletonOverlay, { columnCount: processedColumns.length, translucent: true })), jsx(Box, { sx: { flex: 1, minHeight: 0, display: 'flex', flexDirection: 'column', overflow: 'hidden' }, children: jsx(MaterialReactTable, { table: table }) })] }));
778
838
  }
779
839
 
780
840
  export { GenericPaginatedGrid as default };
@@ -75,6 +75,31 @@ export type TPColumnDef<TData extends object = object, TValue = any> = MRT_Colum
75
75
  * ```
76
76
  */
77
77
  defaultVisible?: boolean;
78
+ /**
79
+ * Text/number the Global Search box should match against for this column.
80
+ *
81
+ * MRT's built-in Global Search always matches the raw accessor value
82
+ * (`row.getValue(columnId)`) — **never** what `Cell` renders. So a column
83
+ * whose `Cell` formats or maps the raw value for display (dates, currency,
84
+ * status labels, etc.) becomes unsearchable by the text a user actually
85
+ * sees on screen: typing the formatted text finds nothing because it's
86
+ * being compared against the untouched raw value underneath.
87
+ *
88
+ * Set `getSearchText` to the same formatted representation `Cell` renders,
89
+ * and `GenericPaginatedGrid` will match Global Search against it instead:
90
+ *
91
+ * ```ts
92
+ * {
93
+ * accessorKey: 'InvoiceDate',
94
+ * Cell: ({ cell }) => formatDate(cell.getValue<string>()),
95
+ * getSearchText: (row) => formatDate(row.InvoiceDate), // "01 Jul 2026" now matches
96
+ * }
97
+ * ```
98
+ *
99
+ * Omit when `Cell` is absent or simply displays the raw value unchanged —
100
+ * the raw accessor value is matched by default in that case.
101
+ */
102
+ getSearchText?: (row: TData) => string | number | null | undefined;
78
103
  };
79
104
  export interface InvoiceDetail {
80
105
  Data_from: string;
@@ -1,12 +1,12 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { Box, TextField, FormControlLabel, Tooltip } from '@mui/material';
2
+ import { Tooltip, Box, TextField, FormControlLabel } from '@mui/material';
3
3
  import Checkbox from '@mui/material/Checkbox';
4
4
  import FormControl from '@mui/material/FormControl';
5
5
  import ListItemText from '@mui/material/ListItemText';
6
6
  import MenuItem from '@mui/material/MenuItem';
7
7
  import Select from '@mui/material/Select';
8
- import * as React from 'react';
9
- import { useState, useCallback } from 'react';
8
+ import * as require$$0 from 'react';
9
+ import { useState, useMemo, useCallback } from 'react';
10
10
 
11
11
  const ITEM_HEIGHT = 36;
12
12
  const ITEM_PADDING_TOP = 2;
@@ -16,29 +16,26 @@ const extractValuesToArray = (inputString) => {
16
16
  return trimmedArray;
17
17
  };
18
18
  function MultiSelectFieldComponent({ value, options, onChangeFn, disable = false, optionFontSize = '13px', donotEnableMultiselectOrder = false }) {
19
- const [personName, setPersonName] = React.useState(value ? extractValuesToArray(value) : []);
19
+ const [personName, setPersonName] = require$$0.useState(value ? extractValuesToArray(value) : []);
20
20
  const [searchText, setSearchText] = useState('');
21
21
  const [selectAll, setSelectAll] = useState(false);
22
- const textfieldRef = React.useRef(null);
23
- const containerRef = React.useRef(null);
22
+ const textfieldRef = require$$0.useRef(null);
23
+ const containerRef = require$$0.useRef(null);
24
24
  const fieldValue = value;
25
- const [savedSortValue, setSavedSortValue] = React.useState(fieldValue);
26
- const sortedOptions = React.useMemo(() => {
25
+ const [savedSortValue, setSavedSortValue] = require$$0.useState(fieldValue);
26
+ const sortedOptions = require$$0.useMemo(() => {
27
27
  const selectedArray = savedSortValue ? savedSortValue.split(',') : [];
28
28
  const selectedItems = options.filter((opt) => selectedArray.includes(String(opt.value)));
29
29
  const unselectedItems = options.filter((opt) => !selectedArray.includes(String(opt.value)));
30
30
  return [...selectedItems, ...unselectedItems];
31
31
  }, [options, savedSortValue]);
32
- const [filterOptions, setFilterOptions] = useState(sortedOptions);
33
- React.useEffect(() => {
34
- if (searchText !== '') {
35
- setFilterOptions(sortedOptions.filter((item) => item.label.toLowerCase().includes(searchText.toLowerCase())));
36
- }
37
- else {
38
- setFilterOptions(sortedOptions);
39
- }
40
- }, [sortedOptions, searchText]);
41
- React.useEffect(() => {
32
+ // Derived directly from sortedOptions/searchText — previously a
33
+ // useState+useEffect pair that duplicated this computation and forced an
34
+ // extra render pass every time either dependency changed.
35
+ const filterOptions = useMemo(() => searchText !== ''
36
+ ? sortedOptions.filter((item) => item.label.toLowerCase().includes(searchText.toLowerCase()))
37
+ : sortedOptions, [sortedOptions, searchText]);
38
+ require$$0.useEffect(() => {
42
39
  const values = fieldValue ? fieldValue.split(',').filter(Boolean) : [];
43
40
  const filterIdStrings = filterOptions.map((item) => String(item.value));
44
41
  if (values.length === 0 || filterOptions.length === 0) {
@@ -57,8 +54,9 @@ function MultiSelectFieldComponent({ value, options, onChangeFn, disable = false
57
54
  setPersonName(typeof value === 'string' ? value?.split(',') : value);
58
55
  onChangeFn((typeof value === 'string' ? value?.split(',') : value).join(','));
59
56
  }, [onChangeFn]);
60
- const selectedOptions = options.filter((item) => fieldValue?.split(',').some((value) => value === item.value));
61
- const selectedValues = selectedOptions.map((item) => item.label).join(' , ');
57
+ const selectedOptions = useMemo(() => options.filter((item) => fieldValue?.split(',').some((value) => value === item.value)), [options, fieldValue]);
58
+ const selectedValues = useMemo(() => selectedOptions.map((item) => item.label).join(' , '), [selectedOptions]);
59
+ const renderSelectedValue = useCallback(() => (jsx(Tooltip, { title: selectedValues, children: jsx("span", { children: selectedOptions.length > 3 ? `${selectedOptions.length} Selected` : selectedValues }) })), [selectedOptions, selectedValues]);
62
60
  return (jsx(Box, { children: jsx(FormControl, { fullWidth: true, ref: containerRef, sx: {
63
61
  '& .css-kichxs-MuiFormLabel-root-MuiInputLabel-root,.css-1holvmy': {
64
62
  top: '-10px',
@@ -81,7 +79,7 @@ function MultiSelectFieldComponent({ value, options, onChangeFn, disable = false
81
79
  if (!donotEnableMultiselectOrder) {
82
80
  setSavedSortValue(fieldValue);
83
81
  }
84
- }, renderValue: () => (jsx(Tooltip, { title: selectedValues, children: jsx("span", { children: selectedOptions.length > 3 ? `${selectedOptions.length} Selected` : selectedValues }) })), MenuProps: {
82
+ }, renderValue: renderSelectedValue, MenuProps: {
85
83
  PaperProps: {
86
84
  style: {
87
85
  maxHeight: ITEM_HEIGHT * 5.5 + ITEM_PADDING_TOP,
@@ -1,5 +1,5 @@
1
1
  import { __exports as Calendar } from '../../../../../_virtual/index.esm7.js';
2
- import React__default from 'react';
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';
5
5
  import { __require as requireMonth } from '../Month/index.esm.js';
@@ -23,7 +23,7 @@ function requireCalendar () {
23
23
  value: true
24
24
  });
25
25
  Calendar.default = void 0;
26
- var _react = _interopRequireWildcard(React__default);
26
+ var _react = _interopRequireWildcard(require$$0__default);
27
27
  var _propTypes = _interopRequireDefault(/*@__PURE__*/ requirePropTypes());
28
28
  var _DayCell = requireDayCell();
29
29
  var _Month = _interopRequireDefault(requireMonth());
@@ -1,5 +1,5 @@
1
- import { __exports as DateInput } from '../../../../../_virtual/index.esm14.js';
2
- import React__default from 'react';
1
+ import { __exports as DateInput } from '../../../../../_virtual/index.esm13.js';
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';
5
5
  import { __require as requireDateFns } from '../../../../date-fns/index.esm.js';
@@ -14,7 +14,7 @@ function requireDateInput () {
14
14
  value: true
15
15
  });
16
16
  DateInput.default = void 0;
17
- var _react = _interopRequireWildcard(React__default);
17
+ var _react = _interopRequireWildcard(require$$0__default);
18
18
  var _propTypes = _interopRequireDefault(/*@__PURE__*/ requirePropTypes());
19
19
  var _classnames = _interopRequireDefault(requireClassnames());
20
20
  var _dateFns = /*@__PURE__*/ requireDateFns();
@@ -1,5 +1,5 @@
1
- import { __exports as DateRange } from '../../../../../_virtual/index.esm6.js';
2
- import React__default from 'react';
1
+ import { __exports as DateRange } from '../../../../../_virtual/index.esm4.js';
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';
5
5
  import { __require as requireDayCell } from '../DayCell/index.esm.js';
@@ -18,7 +18,7 @@ function requireDateRange () {
18
18
  value: true
19
19
  });
20
20
  DateRange.default = void 0;
21
- var _react = _interopRequireWildcard(React__default);
21
+ var _react = _interopRequireWildcard(require$$0__default);
22
22
  var _propTypes = _interopRequireDefault(/*@__PURE__*/ requirePropTypes());
23
23
  var _Calendar = _interopRequireDefault(requireCalendar());
24
24
  var _DayCell = requireDayCell();
@@ -1,5 +1,5 @@
1
- import { __exports as DateRangePicker } from '../../../../../_virtual/index.esm4.js';
2
- import React__default from 'react';
1
+ import { __exports as DateRangePicker } from '../../../../../_virtual/index.esm5.js';
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';
5
5
  import { __require as requireDefinedRange } from '../DefinedRange/index.esm.js';
@@ -17,7 +17,7 @@ function requireDateRangePicker () {
17
17
  value: true
18
18
  });
19
19
  DateRangePicker.default = void 0;
20
- var _react = _interopRequireWildcard(React__default);
20
+ var _react = _interopRequireWildcard(require$$0__default);
21
21
  var _propTypes = _interopRequireDefault(/*@__PURE__*/ requirePropTypes());
22
22
  var _DateRange = _interopRequireDefault(requireDateRange());
23
23
  var _DefinedRange = _interopRequireDefault(requireDefinedRange());
@@ -1,5 +1,5 @@
1
- import { __exports as DayCell } from '../../../../../_virtual/index.esm12.js';
2
- import React__default from 'react';
1
+ import { __exports as DayCell } from '../../../../../_virtual/index.esm11.js';
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';
5
5
  import { __require as requireDateFns } from '../../../../date-fns/index.esm.js';
@@ -14,7 +14,7 @@ function requireDayCell () {
14
14
  value: true
15
15
  });
16
16
  DayCell.rangeShape = DayCell.default = void 0;
17
- var _react = _interopRequireWildcard(React__default);
17
+ var _react = _interopRequireWildcard(require$$0__default);
18
18
  var _propTypes = _interopRequireDefault(/*@__PURE__*/ requirePropTypes());
19
19
  var _classnames = _interopRequireDefault(requireClassnames());
20
20
  var _dateFns = /*@__PURE__*/ requireDateFns();
@@ -1,5 +1,5 @@
1
- import { __exports as DefinedRange } from '../../../../../_virtual/index.esm5.js';
2
- import React__default from 'react';
1
+ import { __exports as DefinedRange } from '../../../../../_virtual/index.esm6.js';
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';
5
5
  import { __require as requireDefaultRanges } from '../../defaultRanges.esm.js';
@@ -17,7 +17,7 @@ function requireDefinedRange () {
17
17
  value: true
18
18
  });
19
19
  DefinedRange.default = void 0;
20
- var _react = _interopRequireWildcard(React__default);
20
+ var _react = _interopRequireWildcard(require$$0__default);
21
21
  var _propTypes = _interopRequireDefault(/*@__PURE__*/ requirePropTypes());
22
22
  var _styles = _interopRequireDefault(requireStyles());
23
23
  var _defaultRanges = requireDefaultRanges();
@@ -1,5 +1,5 @@
1
- import { __exports as InputRangeField } from '../../../../../_virtual/index.esm11.js';
2
- import React__default from 'react';
1
+ import { __exports as InputRangeField } from '../../../../../_virtual/index.esm12.js';
2
+ import require$$0__default from 'react';
3
3
  import { __require as requirePropTypes } from '../../../../prop-types/index.esm.js';
4
4
 
5
5
  var hasRequiredInputRangeField;
@@ -12,7 +12,7 @@ function requireInputRangeField () {
12
12
  value: true
13
13
  });
14
14
  InputRangeField.default = void 0;
15
- var _react = _interopRequireWildcard(React__default);
15
+ var _react = _interopRequireWildcard(require$$0__default);
16
16
  var _propTypes = _interopRequireDefault(/*@__PURE__*/ requirePropTypes());
17
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
18
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
@@ -1,5 +1,5 @@
1
- import { __exports as Month } from '../../../../../_virtual/index.esm13.js';
2
- import React__default from 'react';
1
+ import { __exports as Month } from '../../../../../_virtual/index.esm14.js';
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';
5
5
  import { __require as requireDateFns } from '../../../../date-fns/index.esm.js';
@@ -15,7 +15,7 @@ function requireMonth () {
15
15
  value: true
16
16
  });
17
17
  Month.default = void 0;
18
- var _react = _interopRequireWildcard(React__default);
18
+ var _react = _interopRequireWildcard(require$$0__default);
19
19
  var _propTypes = _interopRequireDefault(/*@__PURE__*/ requirePropTypes());
20
20
  var _DayCell = _interopRequireWildcard(requireDayCell());
21
21
  var _dateFns = /*@__PURE__*/ requireDateFns();
@@ -1,5 +1,5 @@
1
1
  import { __exports as reactList } from '../../_virtual/react-list.esm.js';
2
- import React__default from 'react';
2
+ import require$$0__default from 'react';
3
3
  import require$$1 from 'react/jsx-runtime';
4
4
 
5
5
  var hasRequiredReactList;
@@ -10,7 +10,7 @@ function requireReactList () {
10
10
  (function (exports$1) {
11
11
  (function (global, factory) {
12
12
  {
13
- factory(exports$1, React__default, require$$1);
13
+ factory(exports$1, require$$0__default, require$$1);
14
14
  }
15
15
  })(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : reactList, function (_exports, _react, _jsxRuntime) {
16
16