@bygd/nc-report-ui 0.1.25 → 0.1.27
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/default/cjs/index.cjs +1 -1
- package/dist/default/esm/index.js +175 -85
- package/package.json +4 -3
- package/dist/default/iife/index.js +0 -257
|
@@ -28,6 +28,7 @@ import EditIcon from '@mui/icons-material/Edit';
|
|
|
28
28
|
import ContentCopyIcon from '@mui/icons-material/ContentCopy';
|
|
29
29
|
import DeleteIcon from '@mui/icons-material/Delete';
|
|
30
30
|
import PlayArrowIcon from '@mui/icons-material/PlayArrow';
|
|
31
|
+
import RestoreIcon from '@mui/icons-material/Restore';
|
|
31
32
|
import ArrowBackIcon from '@mui/icons-material/ArrowBack';
|
|
32
33
|
import SaveIcon from '@mui/icons-material/Save';
|
|
33
34
|
import DownloadIcon from '@mui/icons-material/Download';
|
|
@@ -1681,11 +1682,13 @@ const ReportDefinitionsList = ({
|
|
|
1681
1682
|
};
|
|
1682
1683
|
const handleConfirmDelete = async () => {
|
|
1683
1684
|
if (!reportToDelete) return;
|
|
1685
|
+
const isRevert = reportToDelete.source === "user-override";
|
|
1686
|
+
const action = isRevert ? "reverted" : "deleted";
|
|
1684
1687
|
try {
|
|
1685
1688
|
await Api.deleteReportDefinition({
|
|
1686
1689
|
id: reportToDelete.id
|
|
1687
1690
|
});
|
|
1688
|
-
notify.success(`Report "${reportToDelete.title}" deleted successfully!`);
|
|
1691
|
+
notify.success(isRevert ? `Report "${reportToDelete.title}" reverted to system version successfully!` : `Report "${reportToDelete.title}" deleted successfully!`);
|
|
1689
1692
|
|
|
1690
1693
|
// Close dialog and reset state
|
|
1691
1694
|
setDeleteDialogOpen(false);
|
|
@@ -1694,8 +1697,8 @@ const ReportDefinitionsList = ({
|
|
|
1694
1697
|
// Reload the report definitions list
|
|
1695
1698
|
loadReportDefinitions();
|
|
1696
1699
|
} catch (error) {
|
|
1697
|
-
console.error(
|
|
1698
|
-
notify.error(
|
|
1700
|
+
console.error(`Error ${action} report:`, error);
|
|
1701
|
+
notify.error(`Failed to ${action.toLowerCase()} report: ` + (error.response?.data?.message || error.message || "Unknown error"));
|
|
1699
1702
|
setDeleteDialogOpen(false);
|
|
1700
1703
|
setReportToDelete(null);
|
|
1701
1704
|
}
|
|
@@ -1714,6 +1717,11 @@ const ReportDefinitionsList = ({
|
|
|
1714
1717
|
headerName: "Provider",
|
|
1715
1718
|
flex: 1,
|
|
1716
1719
|
minWidth: 200
|
|
1720
|
+
}, {
|
|
1721
|
+
field: "source",
|
|
1722
|
+
headerName: "Source",
|
|
1723
|
+
flex: 1,
|
|
1724
|
+
minWidth: 150
|
|
1717
1725
|
}, {
|
|
1718
1726
|
field: "actions",
|
|
1719
1727
|
headerName: "Actions",
|
|
@@ -1721,48 +1729,60 @@ const ReportDefinitionsList = ({
|
|
|
1721
1729
|
sortable: false,
|
|
1722
1730
|
filterable: false,
|
|
1723
1731
|
disableColumnMenu: true,
|
|
1724
|
-
renderCell: params =>
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1732
|
+
renderCell: params => {
|
|
1733
|
+
const isUserOverride = params.row.source === "user-override";
|
|
1734
|
+
return /*#__PURE__*/React__default.createElement(Box$1, {
|
|
1735
|
+
sx: {
|
|
1736
|
+
display: "flex",
|
|
1737
|
+
gap: 1
|
|
1738
|
+
}
|
|
1739
|
+
}, /*#__PURE__*/React__default.createElement(Tooltip, {
|
|
1740
|
+
title: "Run"
|
|
1741
|
+
}, /*#__PURE__*/React__default.createElement(IconButton, {
|
|
1742
|
+
size: "small",
|
|
1743
|
+
color: "success",
|
|
1744
|
+
onClick: e => handleRun(params.row.id, e)
|
|
1745
|
+
}, /*#__PURE__*/React__default.createElement(PlayArrowIcon, {
|
|
1746
|
+
fontSize: "small"
|
|
1747
|
+
}))), /*#__PURE__*/React__default.createElement(Tooltip, {
|
|
1748
|
+
title: "Edit"
|
|
1749
|
+
}, /*#__PURE__*/React__default.createElement(IconButton, {
|
|
1750
|
+
size: "small",
|
|
1751
|
+
color: "primary",
|
|
1752
|
+
onClick: e => handleEdit(params.row.id, e)
|
|
1753
|
+
}, /*#__PURE__*/React__default.createElement(EditIcon, {
|
|
1754
|
+
fontSize: "small"
|
|
1755
|
+
}))), /*#__PURE__*/React__default.createElement(Tooltip, {
|
|
1756
|
+
title: "Clone"
|
|
1757
|
+
}, /*#__PURE__*/React__default.createElement(IconButton, {
|
|
1758
|
+
size: "small",
|
|
1759
|
+
onClick: e => handleClone(params.row.id, e)
|
|
1760
|
+
}, /*#__PURE__*/React__default.createElement(ContentCopyIcon, {
|
|
1761
|
+
fontSize: "small"
|
|
1762
|
+
}))), isUserOverride ? /*#__PURE__*/React__default.createElement(Tooltip, {
|
|
1763
|
+
title: "Revert to the system report"
|
|
1764
|
+
}, /*#__PURE__*/React__default.createElement(IconButton, {
|
|
1765
|
+
size: "small",
|
|
1766
|
+
color: "warning",
|
|
1767
|
+
onClick: e => handleDelete(params.row.id, e)
|
|
1768
|
+
}, /*#__PURE__*/React__default.createElement(RestoreIcon, {
|
|
1769
|
+
fontSize: "small"
|
|
1770
|
+
}))) : /*#__PURE__*/React__default.createElement(Tooltip, {
|
|
1771
|
+
title: "Delete"
|
|
1772
|
+
}, /*#__PURE__*/React__default.createElement(IconButton, {
|
|
1773
|
+
size: "small",
|
|
1774
|
+
color: "error",
|
|
1775
|
+
onClick: e => handleDelete(params.row.id, e)
|
|
1776
|
+
}, /*#__PURE__*/React__default.createElement(DeleteIcon, {
|
|
1777
|
+
fontSize: "small"
|
|
1778
|
+
}))));
|
|
1779
|
+
}
|
|
1761
1780
|
}];
|
|
1762
1781
|
const rows = reportDefinitions.map(def => ({
|
|
1763
1782
|
id: def.id,
|
|
1764
1783
|
title: def.title,
|
|
1765
|
-
provider: def.provider
|
|
1784
|
+
provider: def.provider,
|
|
1785
|
+
source: def.source
|
|
1766
1786
|
}));
|
|
1767
1787
|
const handleRowClick = params => {
|
|
1768
1788
|
onSelectReport(params.row.id);
|
|
@@ -1862,13 +1882,13 @@ const ReportDefinitionsList = ({
|
|
|
1862
1882
|
}
|
|
1863
1883
|
})), /*#__PURE__*/React__default.createElement(ConfirmDialog, {
|
|
1864
1884
|
open: deleteDialogOpen,
|
|
1865
|
-
title: "Delete Report Definition",
|
|
1866
|
-
message: reportToDelete ? `Are you sure you want to delete "${reportToDelete.title}"? This action cannot be undone.` : "",
|
|
1885
|
+
title: reportToDelete?.source === "user-override" ? "Revert Report Definition" : "Delete Report Definition",
|
|
1886
|
+
message: reportToDelete ? reportToDelete.source === "user-override" ? `Are you sure you want to revert "${reportToDelete.title}" to the system version? Your custom changes will be lost.` : `Are you sure you want to delete "${reportToDelete.title}"? This action cannot be undone.` : "",
|
|
1867
1887
|
onConfirm: handleConfirmDelete,
|
|
1868
1888
|
onCancel: handleCancelDelete,
|
|
1869
|
-
confirmText: "Delete",
|
|
1889
|
+
confirmText: reportToDelete?.source === "user-override" ? "Revert" : "Delete",
|
|
1870
1890
|
cancelText: "Cancel",
|
|
1871
|
-
confirmColor: "error"
|
|
1891
|
+
confirmColor: reportToDelete?.source === "user-override" ? "warning" : "error"
|
|
1872
1892
|
}));
|
|
1873
1893
|
};
|
|
1874
1894
|
|
|
@@ -2280,18 +2300,24 @@ const SortableChip$1 = ({
|
|
|
2280
2300
|
}
|
|
2281
2301
|
})), !isEditing ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Box$1, {
|
|
2282
2302
|
sx: {
|
|
2283
|
-
flex: 1,
|
|
2284
2303
|
minWidth: 0
|
|
2285
2304
|
}
|
|
2305
|
+
}, /*#__PURE__*/React__default.createElement(Tooltip, {
|
|
2306
|
+
title: fullLabel || displayLabel,
|
|
2307
|
+
arrow: true,
|
|
2308
|
+
placement: "top"
|
|
2286
2309
|
}, /*#__PURE__*/React__default.createElement(Typography$1, {
|
|
2287
2310
|
variant: "h6",
|
|
2288
2311
|
sx: {
|
|
2289
2312
|
fontWeight: hasCustomTitle ? 600 : 500,
|
|
2290
2313
|
fontStyle: hasCustomTitle ? "italic" : "normal",
|
|
2291
2314
|
color: "#1a1a1a",
|
|
2292
|
-
fontSize: "14px"
|
|
2315
|
+
fontSize: "14px",
|
|
2316
|
+
whiteSpace: "nowrap",
|
|
2317
|
+
overflow: "hidden",
|
|
2318
|
+
textOverflow: "ellipsis"
|
|
2293
2319
|
}
|
|
2294
|
-
}, displayLabel)), /*#__PURE__*/React__default.createElement(Box$1, {
|
|
2320
|
+
}, displayLabel))), /*#__PURE__*/React__default.createElement(Box$1, {
|
|
2295
2321
|
className: "hover-icons",
|
|
2296
2322
|
sx: {
|
|
2297
2323
|
display: "flex",
|
|
@@ -2318,7 +2344,32 @@ const SortableChip$1 = ({
|
|
|
2318
2344
|
onClick: handleSortToggle,
|
|
2319
2345
|
"aria-label": "toggle sort order",
|
|
2320
2346
|
color: sortOrder ? "primary" : "default"
|
|
2321
|
-
}, getSortIcon())), /*#__PURE__*/React__default.createElement(
|
|
2347
|
+
}, getSortIcon())), /*#__PURE__*/React__default.createElement(Tooltip, {
|
|
2348
|
+
title: "Delete",
|
|
2349
|
+
arrow: true,
|
|
2350
|
+
placement: "top"
|
|
2351
|
+
}, /*#__PURE__*/React__default.createElement(IconButton, {
|
|
2352
|
+
size: "small",
|
|
2353
|
+
onClick: onDelete,
|
|
2354
|
+
"aria-label": "delete",
|
|
2355
|
+
sx: {
|
|
2356
|
+
color: "#ef5350"
|
|
2357
|
+
}
|
|
2358
|
+
}, /*#__PURE__*/React__default.createElement(GridDeleteIcon, {
|
|
2359
|
+
fontSize: "small"
|
|
2360
|
+
})))), /*#__PURE__*/React__default.createElement(Box$1, {
|
|
2361
|
+
sx: {
|
|
2362
|
+
flex: 1
|
|
2363
|
+
}
|
|
2364
|
+
}), /*#__PURE__*/React__default.createElement(Box$1, {
|
|
2365
|
+
className: "hover-icons",
|
|
2366
|
+
sx: {
|
|
2367
|
+
display: "flex",
|
|
2368
|
+
gap: 0.5,
|
|
2369
|
+
opacity: 0,
|
|
2370
|
+
transition: "opacity 0.2s"
|
|
2371
|
+
}
|
|
2372
|
+
}, /*#__PURE__*/React__default.createElement(IconButton, {
|
|
2322
2373
|
size: "small",
|
|
2323
2374
|
onClick: onMoveUp,
|
|
2324
2375
|
disabled: isFirst,
|
|
@@ -2332,27 +2383,15 @@ const SortableChip$1 = ({
|
|
|
2332
2383
|
"aria-label": "move down"
|
|
2333
2384
|
}, /*#__PURE__*/React__default.createElement(ArrowDownwardIcon, {
|
|
2334
2385
|
fontSize: "small"
|
|
2335
|
-
})), /*#__PURE__*/React__default.createElement(
|
|
2336
|
-
title: "Delete",
|
|
2337
|
-
arrow: true,
|
|
2338
|
-
placement: "top"
|
|
2339
|
-
}, /*#__PURE__*/React__default.createElement(IconButton, {
|
|
2340
|
-
size: "small",
|
|
2341
|
-
onClick: onDelete,
|
|
2342
|
-
"aria-label": "delete",
|
|
2343
|
-
sx: {
|
|
2344
|
-
color: "#ef5350"
|
|
2345
|
-
}
|
|
2346
|
-
}, /*#__PURE__*/React__default.createElement(GridDeleteIcon, {
|
|
2347
|
-
fontSize: "small"
|
|
2348
|
-
}))))) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(TextField, {
|
|
2386
|
+
})))) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(TextField, {
|
|
2349
2387
|
inputRef: inputRef,
|
|
2350
2388
|
value: editValue,
|
|
2351
2389
|
onChange: e => setEditValue(e.target.value),
|
|
2352
2390
|
onKeyDown: handleKeyDown,
|
|
2353
2391
|
size: "small",
|
|
2354
2392
|
sx: {
|
|
2355
|
-
|
|
2393
|
+
minWidth: '200px',
|
|
2394
|
+
maxWidth: '400px'
|
|
2356
2395
|
}
|
|
2357
2396
|
}), /*#__PURE__*/React__default.createElement(Box$1, {
|
|
2358
2397
|
className: "hover-icons",
|
|
@@ -2393,7 +2432,11 @@ const SortableChip$1 = ({
|
|
|
2393
2432
|
"aria-label": "reset title"
|
|
2394
2433
|
}, /*#__PURE__*/React__default.createElement(RestartAltIcon, {
|
|
2395
2434
|
fontSize: "small"
|
|
2396
|
-
}))))
|
|
2435
|
+
})))), /*#__PURE__*/React__default.createElement(Box$1, {
|
|
2436
|
+
sx: {
|
|
2437
|
+
flex: 1
|
|
2438
|
+
}
|
|
2439
|
+
}))));
|
|
2397
2440
|
};
|
|
2398
2441
|
const Dimensions = ({
|
|
2399
2442
|
providersData,
|
|
@@ -2963,18 +3006,24 @@ const SortableChip = ({
|
|
|
2963
3006
|
}
|
|
2964
3007
|
})), !isEditing ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Box$1, {
|
|
2965
3008
|
sx: {
|
|
2966
|
-
flex: 1,
|
|
2967
3009
|
minWidth: 0
|
|
2968
3010
|
}
|
|
3011
|
+
}, /*#__PURE__*/React__default.createElement(Tooltip, {
|
|
3012
|
+
title: fullLabel || displayLabel,
|
|
3013
|
+
arrow: true,
|
|
3014
|
+
placement: "top"
|
|
2969
3015
|
}, /*#__PURE__*/React__default.createElement(Typography$1, {
|
|
2970
3016
|
variant: "h6",
|
|
2971
3017
|
sx: {
|
|
2972
3018
|
fontWeight: hasCustomTitle ? 600 : 500,
|
|
2973
3019
|
fontStyle: hasCustomTitle ? "italic" : "normal",
|
|
2974
3020
|
color: "#1a1a1a",
|
|
2975
|
-
fontSize: "14px"
|
|
3021
|
+
fontSize: "14px",
|
|
3022
|
+
whiteSpace: "nowrap",
|
|
3023
|
+
overflow: "hidden",
|
|
3024
|
+
textOverflow: "ellipsis"
|
|
2976
3025
|
}
|
|
2977
|
-
}, displayLabel)), /*#__PURE__*/React__default.createElement(Box$1, {
|
|
3026
|
+
}, displayLabel))), /*#__PURE__*/React__default.createElement(Box$1, {
|
|
2978
3027
|
className: "hover-icons",
|
|
2979
3028
|
sx: {
|
|
2980
3029
|
display: "flex",
|
|
@@ -2992,7 +3041,32 @@ const SortableChip = ({
|
|
|
2992
3041
|
"aria-label": "edit title"
|
|
2993
3042
|
}, /*#__PURE__*/React__default.createElement(EditIcon, {
|
|
2994
3043
|
fontSize: "small"
|
|
2995
|
-
}))), /*#__PURE__*/React__default.createElement(
|
|
3044
|
+
}))), /*#__PURE__*/React__default.createElement(Tooltip, {
|
|
3045
|
+
title: "Delete",
|
|
3046
|
+
arrow: true,
|
|
3047
|
+
placement: "top"
|
|
3048
|
+
}, /*#__PURE__*/React__default.createElement(IconButton, {
|
|
3049
|
+
size: "small",
|
|
3050
|
+
onClick: onDelete,
|
|
3051
|
+
"aria-label": "delete",
|
|
3052
|
+
sx: {
|
|
3053
|
+
color: "#ef5350"
|
|
3054
|
+
}
|
|
3055
|
+
}, /*#__PURE__*/React__default.createElement(GridDeleteIcon, {
|
|
3056
|
+
fontSize: "small"
|
|
3057
|
+
})))), /*#__PURE__*/React__default.createElement(Box$1, {
|
|
3058
|
+
sx: {
|
|
3059
|
+
flex: 1
|
|
3060
|
+
}
|
|
3061
|
+
}), /*#__PURE__*/React__default.createElement(Box$1, {
|
|
3062
|
+
className: "hover-icons",
|
|
3063
|
+
sx: {
|
|
3064
|
+
display: "flex",
|
|
3065
|
+
gap: 0.5,
|
|
3066
|
+
opacity: 0,
|
|
3067
|
+
transition: "opacity 0.2s"
|
|
3068
|
+
}
|
|
3069
|
+
}, /*#__PURE__*/React__default.createElement(IconButton, {
|
|
2996
3070
|
size: "small",
|
|
2997
3071
|
onClick: onMoveUp,
|
|
2998
3072
|
disabled: isFirst,
|
|
@@ -3006,27 +3080,15 @@ const SortableChip = ({
|
|
|
3006
3080
|
"aria-label": "move down"
|
|
3007
3081
|
}, /*#__PURE__*/React__default.createElement(ArrowDownwardIcon, {
|
|
3008
3082
|
fontSize: "small"
|
|
3009
|
-
})), /*#__PURE__*/React__default.createElement(
|
|
3010
|
-
title: "Delete",
|
|
3011
|
-
arrow: true,
|
|
3012
|
-
placement: "top"
|
|
3013
|
-
}, /*#__PURE__*/React__default.createElement(IconButton, {
|
|
3014
|
-
size: "small",
|
|
3015
|
-
onClick: onDelete,
|
|
3016
|
-
"aria-label": "delete",
|
|
3017
|
-
sx: {
|
|
3018
|
-
color: "#ef5350"
|
|
3019
|
-
}
|
|
3020
|
-
}, /*#__PURE__*/React__default.createElement(GridDeleteIcon, {
|
|
3021
|
-
fontSize: "small"
|
|
3022
|
-
}))))) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(TextField, {
|
|
3083
|
+
})))) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(TextField, {
|
|
3023
3084
|
inputRef: inputRef,
|
|
3024
3085
|
value: editValue,
|
|
3025
3086
|
onChange: e => setEditValue(e.target.value),
|
|
3026
3087
|
onKeyDown: handleKeyDown,
|
|
3027
3088
|
size: "small",
|
|
3028
3089
|
sx: {
|
|
3029
|
-
|
|
3090
|
+
minWidth: '200px',
|
|
3091
|
+
maxWidth: '400px'
|
|
3030
3092
|
}
|
|
3031
3093
|
}), /*#__PURE__*/React__default.createElement(Box$1, {
|
|
3032
3094
|
className: "hover-icons",
|
|
@@ -3067,7 +3129,11 @@ const SortableChip = ({
|
|
|
3067
3129
|
"aria-label": "reset title"
|
|
3068
3130
|
}, /*#__PURE__*/React__default.createElement(RestartAltIcon, {
|
|
3069
3131
|
fontSize: "small"
|
|
3070
|
-
}))))
|
|
3132
|
+
})))), /*#__PURE__*/React__default.createElement(Box$1, {
|
|
3133
|
+
sx: {
|
|
3134
|
+
flex: 1
|
|
3135
|
+
}
|
|
3136
|
+
}))));
|
|
3071
3137
|
};
|
|
3072
3138
|
const Metrics = ({
|
|
3073
3139
|
providersData,
|
|
@@ -5824,6 +5890,30 @@ const ReportApp = ({
|
|
|
5824
5890
|
}
|
|
5825
5891
|
}
|
|
5826
5892
|
}
|
|
5893
|
+
},
|
|
5894
|
+
MuiTooltip: {
|
|
5895
|
+
styleOverrides: {
|
|
5896
|
+
tooltip: {
|
|
5897
|
+
fontSize: "0.875rem",
|
|
5898
|
+
backgroundColor: "rgba(97, 97, 97, 0.95)",
|
|
5899
|
+
maxWidth: 500
|
|
5900
|
+
},
|
|
5901
|
+
arrow: {
|
|
5902
|
+
color: "rgba(97, 97, 97, 0.95)"
|
|
5903
|
+
}
|
|
5904
|
+
},
|
|
5905
|
+
defaultProps: {
|
|
5906
|
+
arrow: true,
|
|
5907
|
+
enterDelay: 300,
|
|
5908
|
+
leaveDelay: 200
|
|
5909
|
+
}
|
|
5910
|
+
},
|
|
5911
|
+
MuiPopper: {
|
|
5912
|
+
defaultProps: {
|
|
5913
|
+
style: {
|
|
5914
|
+
zIndex: 1500
|
|
5915
|
+
}
|
|
5916
|
+
}
|
|
5827
5917
|
}
|
|
5828
5918
|
}
|
|
5829
5919
|
})
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bygd/nc-report-ui",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.27",
|
|
4
4
|
"files": [
|
|
5
5
|
"dist/*",
|
|
6
6
|
"fnet/input.yaml",
|
|
@@ -25,13 +25,14 @@
|
|
|
25
25
|
"@material-ui/core": "^4.12",
|
|
26
26
|
"@mui/icons-material": "^7.3",
|
|
27
27
|
"@mui/material": "^7.3",
|
|
28
|
-
"@mui/x-data-grid": "^8.
|
|
29
|
-
"@mui/x-date-pickers": "^8.
|
|
28
|
+
"@mui/x-data-grid": "^8.22",
|
|
29
|
+
"@mui/x-date-pickers": "^8.22",
|
|
30
30
|
"axios": "^1.13",
|
|
31
31
|
"dayjs": "^1.11",
|
|
32
32
|
"eventemitter3": "^5.0",
|
|
33
33
|
"numeral": "^2.0",
|
|
34
34
|
"nunjucks": "^3.2",
|
|
35
|
+
"preact": "^10",
|
|
35
36
|
"react": "^18",
|
|
36
37
|
"react-dom": "^18",
|
|
37
38
|
"react-google-charts": "^5.2",
|