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.
- package/dist/_virtual/index.esm11.js +2 -2
- package/dist/_virtual/index.esm12.js +2 -2
- package/dist/_virtual/index.esm13.js +2 -2
- package/dist/_virtual/index.esm14.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/Button/Button.esm.js +9 -5
- package/dist/components/DatePicker/index.d.ts +1 -0
- package/dist/components/DatePicker/index.esm.js +2 -1
- package/dist/components/DeleteComponent/DeleteField.esm.js +20 -14
- package/dist/components/Form/FormActiveSwitch.esm.js +5 -1
- package/dist/components/Form/FormConstants.esm.js +1 -0
- package/dist/components/Form/FormRender.esm.js +14 -10
- package/dist/components/Form/FormRenderWrapper.esm.js +2 -2
- package/dist/components/FormComponents/DatePicker/MonthPickerMultiRender.d.ts +6 -0
- package/dist/components/FormComponents/DatePicker/MonthPickerMultiRender.esm.js +117 -0
- package/dist/components/FormComponents/DatePicker/Monthpickerrender.esm.js +6 -4
- package/dist/components/FormComponents/FileUpload/MultiFileWithPreview.esm.js +38 -6
- package/dist/components/FormComponents/FormCheckBoxGroup/FormCheckBoxGroup.esm.js +11 -8
- package/dist/components/FormComponents/FormRadioGroup/FormRadioGroup.esm.js +14 -12
- package/dist/components/FormComponents/Select/MultiSelectTable.esm.js +176 -160
- package/dist/components/FormComponents/Select/MultiSelectv1.esm.js +2 -2
- package/dist/components/FormComponents/index.esm.js +16 -22
- package/dist/components/ModalField/ConfirmationDialog.esm.js +37 -37
- package/dist/components/ModalField/ModalField.esm.js +19 -16
- package/dist/components/PaginatedGrid/DynamicFilterBar.d.ts +12 -4
- package/dist/components/PaginatedGrid/DynamicFilterBar.esm.js +48 -16
- package/dist/components/PaginatedGrid/GenericPaginatedGrid.d.ts +8 -1
- package/dist/components/PaginatedGrid/GenericPaginatedGrid.esm.js +80 -20
- package/dist/components/PaginatedGrid/types.d.ts +25 -0
- package/dist/components/SelectField/MultiSelectFieldComponent.esm.js +19 -21
- package/dist/node_modules/react-date-range/dist/components/Calendar/index.esm.js +2 -2
- package/dist/node_modules/react-date-range/dist/components/DateInput/index.esm.js +3 -3
- package/dist/node_modules/react-date-range/dist/components/DateRange/index.esm.js +3 -3
- package/dist/node_modules/react-date-range/dist/components/DateRangePicker/index.esm.js +3 -3
- package/dist/node_modules/react-date-range/dist/components/DayCell/index.esm.js +3 -3
- package/dist/node_modules/react-date-range/dist/components/DefinedRange/index.esm.js +3 -3
- package/dist/node_modules/react-date-range/dist/components/InputRangeField/index.esm.js +3 -3
- package/dist/node_modules/react-date-range/dist/components/Month/index.esm.js +3 -3
- package/dist/node_modules/react-list/react-list.esm.js +2 -2
- package/dist/utils/Interface/FormInterface.d.ts +1 -1
- 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
|
-
|
|
263
|
-
const
|
|
264
|
-
|
|
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" }))] }),
|
|
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
|
-
//
|
|
308
|
-
//
|
|
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
|
-
//
|
|
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) =>
|
|
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
|
|
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:
|
|
190
|
-
|
|
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
|
-
|
|
194
|
-
|
|
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
|
|
397
|
-
// MRT doesn't know these props, so we strip them here. We
|
|
398
|
-
// appropriate `filterFn` automatically so callers never
|
|
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
|
-
|
|
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(
|
|
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
|
|
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
|
|
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] =
|
|
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 =
|
|
23
|
-
const containerRef =
|
|
22
|
+
const textfieldRef = require$$0.useRef(null);
|
|
23
|
+
const containerRef = require$$0.useRef(null);
|
|
24
24
|
const fieldValue = value;
|
|
25
|
-
const [savedSortValue, setSavedSortValue] =
|
|
26
|
-
const sortedOptions =
|
|
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
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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:
|
|
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
|
|
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(
|
|
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.
|
|
2
|
-
import
|
|
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(
|
|
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.
|
|
2
|
-
import
|
|
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(
|
|
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.
|
|
2
|
-
import
|
|
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(
|
|
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.
|
|
2
|
-
import
|
|
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(
|
|
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.
|
|
2
|
-
import
|
|
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(
|
|
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.
|
|
2
|
-
import
|
|
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(
|
|
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.
|
|
2
|
-
import
|
|
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(
|
|
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
|
|
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,
|
|
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
|
|