@natoora-libs/core 0.0.41 → 0.1.0

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.
@@ -11,11 +11,11 @@ var __export = (target, all) => {
11
11
  for (var name in all)
12
12
  __defProp(target, name, { get: all[name], enumerable: true });
13
13
  };
14
- var __copyProps = (to, from, except, desc2) => {
14
+ var __copyProps = (to, from, except, desc) => {
15
15
  if (from && typeof from === "object" || typeof from === "function") {
16
16
  for (let key of __getOwnPropNames(from))
17
17
  if (!__hasOwnProp.call(to, key) && key !== except)
18
- __defProp(to, key, { get: () => from[key], enumerable: !(desc2 = __getOwnPropDesc(from, key)) || desc2.enumerable });
18
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
19
19
  }
20
20
  return to;
21
21
  };
@@ -374,6 +374,7 @@ __export(components_exports, {
374
374
  SectionName: () => SectionName_default,
375
375
  SmartSelect: () => SmartSelect_default,
376
376
  SmartTableHeader: () => SmartTableHeader_default,
377
+ SmartTableHeaderFilterMenu: () => SmartTableHeaderFilterMenu_default,
377
378
  SquareButton: () => SquareButton_default,
378
379
  SquareLabel: () => SquareLabel_default,
379
380
  Switch: () => Switch_default,
@@ -458,7 +459,6 @@ var AlertDialog_default = AlertDialog;
458
459
  // src/components/AlertDialogFullScreen/AlertDialogFullScreen.tsx
459
460
  var import_material2 = require("@mui/material");
460
461
  var import_jsx_runtime2 = require("react/jsx-runtime");
461
- console.log("wqpkoe");
462
462
  var AlertDialogFullScreen = ({
463
463
  handleAlertAccept,
464
464
  handleAlertReject,
@@ -4560,7 +4560,7 @@ var drawerAppList = [
4560
4560
  featureNames: [featureName_default.CUSTOMERS],
4561
4561
  pinned: "customers",
4562
4562
  icon: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(icons_default.SvgIconAccount, {}),
4563
- url: `/customer-list`,
4563
+ url: `/react/customers`,
4564
4564
  children: [
4565
4565
  {
4566
4566
  name: "Sites",
@@ -6371,10 +6371,11 @@ var RenderContentList = ({
6371
6371
  const sections = items.map((item) => ({
6372
6372
  id: transformNameToID(item),
6373
6373
  element: document.getElementById(transformNameToID(item))
6374
- }));
6374
+ })).filter(({ element }) => element !== null);
6375
6375
  if (observer.current) {
6376
6376
  observer.current.disconnect();
6377
6377
  }
6378
+ if (sections.length === 0) return;
6378
6379
  observer.current = new IntersectionObserver(
6379
6380
  (entries) => {
6380
6381
  const visibleSection = entries.find((entry) => entry.isIntersecting);
@@ -6406,11 +6407,18 @@ var RenderContentList = ({
6406
6407
  return /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(
6407
6408
  import_material47.ListItemButton,
6408
6409
  {
6409
- component: "a",
6410
- href: `#${id}`,
6411
- onClick: () => setActive(id),
6412
6410
  selected: active === id,
6413
6411
  classes: { root: classes.root, selected: classes.selected },
6412
+ onClick: () => {
6413
+ setActive(id);
6414
+ const element = document.getElementById(id);
6415
+ if (element) {
6416
+ element.scrollIntoView({
6417
+ behavior: "smooth",
6418
+ block: "start"
6419
+ });
6420
+ }
6421
+ },
6414
6422
  children: [
6415
6423
  /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_material47.ListItemText, { primary: item }),
6416
6424
  warningItems?.includes(item) && /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_material47.Tooltip, { title: warningMessage, children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_icons_material10.WarningAmber, { color: "warning" }) })
@@ -7321,14 +7329,205 @@ var LabelledSwitch = (0, import_mui50.withStyles)(LSwitch, (theme) => ({
7321
7329
  }));
7322
7330
  var Switch_default = (0, import_react31.memo)(LabelledSwitch);
7323
7331
 
7324
- // src/components/Table/SmartTableHeader.tsx
7325
- var import_react32 = require("react");
7332
+ // src/components/SmartTableHeaderFilterMenu/SmartTableHeaderFilterMenu.tsx
7333
+ var import_react32 = __toESM(require("react"), 1);
7334
+ var import_icons_material14 = require("@mui/icons-material");
7326
7335
  var import_material58 = require("@mui/material");
7336
+ var import_classnames3 = __toESM(require("classnames"), 1);
7327
7337
  var import_mui51 = require("tss-react/mui");
7328
7338
  var import_jsx_runtime109 = require("react/jsx-runtime");
7329
- var useStyles45 = (0, import_mui51.makeStyles)()(() => ({
7339
+ var useStyles45 = (0, import_mui51.makeStyles)()((theme) => ({
7340
+ filterMenu: {
7341
+ display: "flex",
7342
+ flexDirection: "column",
7343
+ gap: theme.spacing(0.5)
7344
+ },
7345
+ filterCheckboxDropdown: {
7346
+ display: "flex",
7347
+ flexDirection: "column",
7348
+ padding: theme.spacing(0, 3)
7349
+ },
7350
+ applyFilterButtonsContainer: {
7351
+ display: "flex",
7352
+ padding: theme.spacing(0, 1)
7353
+ }
7354
+ }));
7355
+ var resolveFilterOption = (filterOption) => {
7356
+ if (typeof filterOption === "object") {
7357
+ return filterOption?.label || filterOption?.name || "";
7358
+ }
7359
+ return filterOption;
7360
+ };
7361
+ var findFilterIndex = (filters, filterOption) => filters.findIndex((item) => {
7362
+ if (typeof item === "string" && typeof filterOption === "string") {
7363
+ return item === filterOption;
7364
+ }
7365
+ if (typeof item === "object" && typeof filterOption === "object") {
7366
+ return item.id === filterOption.id;
7367
+ }
7368
+ return false;
7369
+ });
7370
+ var SmartTableHeaderFilterMenu = ({
7371
+ headCell,
7372
+ hasActiveFilters,
7373
+ headerFilters,
7374
+ onApplyFilters
7375
+ }) => {
7376
+ const { classes } = useStyles45();
7377
+ const [anchorEl, setAnchorEl] = (0, import_react32.useState)(null);
7378
+ const [shouldSave, setShouldSave] = (0, import_react32.useState)(false);
7379
+ const [selectedFilters, setSelectedFilters] = (0, import_react32.useState)(
7380
+ headerFilters[headCell.id] ?? []
7381
+ );
7382
+ const handleFilterMenuOpen = (event) => {
7383
+ if (!headCell.filterOptionsQuery?.data?.length) {
7384
+ headCell.filterOptionsQuery?.refetch();
7385
+ }
7386
+ setAnchorEl(event.currentTarget);
7387
+ };
7388
+ const handleFilterMenuClose = () => {
7389
+ setSelectedFilters(headerFilters[headCell.id]);
7390
+ setAnchorEl(null);
7391
+ setShouldSave(false);
7392
+ };
7393
+ const handleFilterOptionClick = (option) => {
7394
+ const selectedIndex = findFilterIndex(selectedFilters, option);
7395
+ let newSelected;
7396
+ if (selectedIndex === -1) {
7397
+ if (typeof option === "string") {
7398
+ newSelected = [...selectedFilters, option];
7399
+ } else {
7400
+ newSelected = [...selectedFilters, option];
7401
+ }
7402
+ } else {
7403
+ newSelected = selectedFilters.filter(
7404
+ (_, index) => index !== selectedIndex
7405
+ );
7406
+ }
7407
+ setSelectedFilters(newSelected);
7408
+ };
7409
+ return /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_jsx_runtime109.Fragment, { children: [
7410
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
7411
+ import_material58.IconButton,
7412
+ {
7413
+ disableRipple: true,
7414
+ onClick: handleFilterMenuOpen,
7415
+ "data-testid": "filter-menu-button",
7416
+ style: { padding: 0 },
7417
+ className: (0, import_classnames3.default)("filter-menu-trigger", {
7418
+ "has-active-filters": hasActiveFilters
7419
+ }),
7420
+ children: hasActiveFilters ? /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
7421
+ import_material58.Chip,
7422
+ {
7423
+ sx: { height: 24 },
7424
+ label: headerFilters[headCell.id]?.length,
7425
+ icon: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_icons_material14.FilterList, { style: { fontSize: 18 }, color: "primary" })
7426
+ }
7427
+ ) : /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_icons_material14.FilterList, { style: { fontSize: 18 } })
7428
+ }
7429
+ ),
7430
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
7431
+ import_material58.Menu,
7432
+ {
7433
+ open: !!anchorEl,
7434
+ onClose: handleFilterMenuClose,
7435
+ anchorEl,
7436
+ "data-testid": "filter-menu",
7437
+ anchorOrigin: { vertical: "bottom", horizontal: "right" },
7438
+ transformOrigin: { vertical: "top", horizontal: "right" },
7439
+ children: /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_material58.Box, { className: classes.filterMenu, children: [
7440
+ headCell.filterOptionsQuery?.data?.map(
7441
+ (option) => {
7442
+ const resolvedOption = resolveFilterOption(option);
7443
+ return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
7444
+ import_material58.FormControl,
7445
+ {
7446
+ className: classes.filterCheckboxDropdown,
7447
+ children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
7448
+ import_material58.FormControlLabel,
7449
+ {
7450
+ label: resolvedOption,
7451
+ control: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
7452
+ import_material58.Checkbox,
7453
+ {
7454
+ disableRipple: true,
7455
+ onChange: () => handleFilterOptionClick(option),
7456
+ checked: selectedFilters?.some(
7457
+ (value) => resolveFilterOption(value) === resolvedOption
7458
+ ) ?? false
7459
+ }
7460
+ )
7461
+ }
7462
+ )
7463
+ },
7464
+ resolvedOption
7465
+ );
7466
+ }
7467
+ ),
7468
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_material58.Divider, {}),
7469
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_material58.FormControl, { className: classes.filterCheckboxDropdown, children: [
7470
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
7471
+ import_material58.FormControlLabel,
7472
+ {
7473
+ label: "Save Filters",
7474
+ control: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
7475
+ import_material58.Checkbox,
7476
+ {
7477
+ disableRipple: true,
7478
+ checked: shouldSave,
7479
+ onChange: (e) => setShouldSave(e.target.checked)
7480
+ }
7481
+ )
7482
+ }
7483
+ ),
7484
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_material58.FormHelperText, { sx: { margin: 0 }, children: "Filters auto-apply on return." })
7485
+ ] }),
7486
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_material58.Divider, {}),
7487
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_material58.Box, { className: classes.applyFilterButtonsContainer, children: [
7488
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
7489
+ ExtendedButton_default,
7490
+ {
7491
+ buttonType: "button",
7492
+ copy: "Deselect All",
7493
+ variant: "text",
7494
+ onClick: () => setSelectedFilters([])
7495
+ }
7496
+ ),
7497
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
7498
+ ExtendedButton_default,
7499
+ {
7500
+ copy: "Apply",
7501
+ color: "primary",
7502
+ buttonType: "submit",
7503
+ onClick: () => {
7504
+ const updatedFilters = {
7505
+ ...headerFilters,
7506
+ [headCell.id]: [...selectedFilters]
7507
+ };
7508
+ onApplyFilters?.(updatedFilters, shouldSave);
7509
+ setAnchorEl(null);
7510
+ setShouldSave(false);
7511
+ }
7512
+ }
7513
+ )
7514
+ ] })
7515
+ ] })
7516
+ }
7517
+ )
7518
+ ] });
7519
+ };
7520
+ var SmartTableHeaderFilterMenu_default = import_react32.default.memo(SmartTableHeaderFilterMenu);
7521
+
7522
+ // src/components/SmartTableHeader/SmartTableHeader.tsx
7523
+ var import_react33 = require("react");
7524
+ var import_material59 = require("@mui/material");
7525
+ var import_mui52 = require("tss-react/mui");
7526
+ var import_jsx_runtime110 = require("react/jsx-runtime");
7527
+ var useStyles46 = (0, import_mui52.makeStyles)()((theme) => ({
7330
7528
  root: {
7331
7529
  backgroundColor: colors.neutral100,
7530
+ height: theme.spacing(6),
7332
7531
  "& .MuiTableSortLabel-root": {
7333
7532
  fontWeight: 600,
7334
7533
  fontSize: ".875rem"
@@ -7345,51 +7544,130 @@ var useStyles45 = (0, import_mui51.makeStyles)()(() => ({
7345
7544
  top: 20,
7346
7545
  width: 1
7347
7546
  },
7348
- containerTh: {
7547
+ tableHeaderContent: {
7349
7548
  borderBottom: "1px solid",
7350
7549
  borderBottomColor: colors.neutral250,
7351
- backgroundColor: colors.neutral100,
7352
- outline: "1px solid",
7353
- outlineColor: colors.neutral100
7550
+ whiteSpace: "nowrap",
7551
+ "& .filter-menu-trigger": {
7552
+ visibility: "hidden",
7553
+ opacity: 0,
7554
+ transition: "visibility 0.1s, opacity 0.1s ease-in"
7555
+ },
7556
+ "&:hover .filter-menu-trigger, & .filter-menu-trigger.has-active-filters": {
7557
+ visibility: "visible",
7558
+ opacity: 1
7559
+ },
7560
+ "&:hover .MuiTableSortLabel-root": {
7561
+ "& .MuiTableSortLabel-icon": {
7562
+ opacity: 1
7563
+ }
7564
+ }
7565
+ },
7566
+ filterMenu: {
7567
+ display: "flex",
7568
+ flexDirection: "column",
7569
+ gap: theme.spacing(0.5)
7570
+ },
7571
+ filterCheckboxDropdown: {
7572
+ display: "flex",
7573
+ flexDirection: "column",
7574
+ padding: theme.spacing(0, 3)
7575
+ },
7576
+ applyFilterButtonsContainer: {
7577
+ display: "flex",
7578
+ padding: theme.spacing(0, 1)
7354
7579
  }
7355
7580
  }));
7356
- var SmartTableHeader = (props) => {
7357
- const { classes } = useStyles45();
7358
- const { order, orderBy, onRequestSort } = props;
7581
+ var SmartTableHeader = ({
7582
+ order,
7583
+ orderBy,
7584
+ headCells,
7585
+ numSelected,
7586
+ numRows,
7587
+ enableCheckboxSelection = false,
7588
+ headerFilters,
7589
+ onRequestSort,
7590
+ onSelectAllClick,
7591
+ onApplyFilters
7592
+ }) => {
7593
+ const { classes } = useStyles46();
7359
7594
  const createSortHandler = (property) => (event) => {
7360
- onRequestSort?.(event, property);
7595
+ onRequestSort(event, property);
7361
7596
  };
7362
- return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_material58.TableHead, { className: classes.root, children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_material58.TableRow, { children: props.headCells.map((headCell) => /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
7363
- import_material58.TableCell,
7364
- {
7365
- className: classes.containerTh,
7366
- align: "left",
7367
- sortDirection: orderBy === headCell.id ? order : false,
7368
- children: /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(
7369
- import_material58.TableSortLabel,
7370
- {
7371
- active: orderBy === headCell.id,
7372
- direction: orderBy === headCell.id ? order : "asc",
7373
- onClick: createSortHandler(headCell.id),
7374
- children: [
7375
- headCell.label,
7376
- orderBy === headCell.id ? /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("span", { className: classes.visuallyHidden, children: order === "desc" ? "sorted descending" : "sorted ascending" }) : null
7377
- ]
7378
- }
7379
- )
7380
- },
7381
- headCell.id
7382
- )) }) });
7597
+ const isSortActive = (headCellId) => orderBy === headCellId;
7598
+ return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_material59.TableHead, { className: classes.root, children: /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(import_material59.TableRow, { children: [
7599
+ enableCheckboxSelection ? /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_material59.TableCell, { padding: "checkbox", children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
7600
+ import_material59.Checkbox,
7601
+ {
7602
+ color: "primary",
7603
+ indeterminate: numSelected > 0 && numSelected < numRows,
7604
+ checked: numRows > 0 && numSelected === numRows,
7605
+ onChange: onSelectAllClick
7606
+ }
7607
+ ) }) : null,
7608
+ headCells.map((headCell) => /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
7609
+ import_material59.TableCell,
7610
+ {
7611
+ className: classes.tableHeaderContent,
7612
+ align: "left",
7613
+ sortDirection: orderBy === headCell.id ? order : false,
7614
+ children: [
7615
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
7616
+ import_material59.TableSortLabel,
7617
+ {
7618
+ "data-testid": "table-sort-label",
7619
+ active: isSortActive(headCell.id),
7620
+ direction: orderBy === headCell.id ? order : "asc",
7621
+ onClick: createSortHandler(headCell.id),
7622
+ children: [
7623
+ headCell.renderHeader ?? headCell.label,
7624
+ orderBy === headCell.id ? /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: classes.visuallyHidden, children: order === "desc" ? "sorted descending" : "sorted ascending" }) : null
7625
+ ]
7626
+ }
7627
+ ),
7628
+ headCell.filterOptionsQuery ? /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
7629
+ SmartTableHeaderFilterMenu_default,
7630
+ {
7631
+ headCell,
7632
+ headerFilters,
7633
+ hasActiveFilters: !!headerFilters[headCell.id]?.length,
7634
+ onApplyFilters
7635
+ }
7636
+ ) : null
7637
+ ]
7638
+ },
7639
+ headCell.id
7640
+ ))
7641
+ ] }) });
7383
7642
  };
7384
- var SmartTableHeader_default = (0, import_react32.memo)(SmartTableHeader);
7643
+ var SmartTableHeader_default = (0, import_react33.memo)(SmartTableHeader);
7385
7644
 
7386
7645
  // src/components/Table/Table.tsx
7387
- var import_react33 = require("react");
7388
- var import_material60 = require("@mui/material");
7646
+ var import_react34 = require("react");
7647
+ var import_material61 = require("@mui/material");
7389
7648
  var import_debounce = __toESM(require_debounce(), 1);
7390
- var import_mui52 = require("tss-react/mui");
7649
+ var import_mui53 = require("tss-react/mui");
7391
7650
  var import_uuid = require("uuid");
7392
7651
 
7652
+ // src/components/TableLoading/TableLoading.tsx
7653
+ var import_material60 = require("@mui/material");
7654
+ var import_jsx_runtime111 = require("react/jsx-runtime");
7655
+ var TableLoading = ({
7656
+ rowsPerPage,
7657
+ rowHeight
7658
+ }) => /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_material60.Box, { children: Array.from({ length: rowsPerPage ?? 0 }).map((_, index) => /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
7659
+ import_material60.Skeleton,
7660
+ {
7661
+ animation: "pulse",
7662
+ "data-testid": "table-loading-skeleton",
7663
+ style: { margin: "8px", opacity: 0.4 },
7664
+ variant: "rectangular",
7665
+ height: rowHeight
7666
+ },
7667
+ index
7668
+ )) });
7669
+ var TableLoading_default = TableLoading;
7670
+
7393
7671
  // src/components/Table/helpers.tsx
7394
7672
  function stableSort(array, cmp) {
7395
7673
  const stabilizedThis = array.map((el, index) => [el, index]);
@@ -7425,24 +7703,9 @@ function calculateRowsPerPage(rowHeight) {
7425
7703
  return 1;
7426
7704
  }
7427
7705
 
7428
- // src/components/Table/TableLoading.tsx
7429
- var import_material59 = require("@mui/material");
7430
- var import_jsx_runtime110 = require("react/jsx-runtime");
7431
- var TableLoading = ({ rowsPerPage = 0, rowHeight }) => /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_material59.Box, { children: Array.from({ length: rowsPerPage }).map((x, i) => /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
7432
- import_material59.Skeleton,
7433
- {
7434
- animation: "pulse",
7435
- style: { margin: "8px", opacity: 0.4 },
7436
- variant: "rectangular",
7437
- height: rowHeight
7438
- },
7439
- i
7440
- )) });
7441
- var TableLoading_default = TableLoading;
7442
-
7443
7706
  // src/components/Table/Table.tsx
7444
- var import_jsx_runtime111 = require("react/jsx-runtime");
7445
- var useStyles46 = (0, import_mui52.makeStyles)()(() => ({
7707
+ var import_jsx_runtime112 = require("react/jsx-runtime");
7708
+ var useStyles47 = (0, import_mui53.makeStyles)()(() => ({
7446
7709
  root: {
7447
7710
  height: "calc(100vh - 262px)",
7448
7711
  overflow: "scroll"
@@ -7476,12 +7739,12 @@ var Table = ({
7476
7739
  serverRendered,
7477
7740
  updateSort
7478
7741
  }) => {
7479
- const [order, setOrder] = (0, import_react33.useState)(appliedFilters?.sortDir || "desc");
7480
- const [orderBy, setOrderBy] = (0, import_react33.useState)(
7742
+ const [order, setOrder] = (0, import_react34.useState)(appliedFilters?.sortDir || "desc");
7743
+ const [orderBy, setOrderBy] = (0, import_react34.useState)(
7481
7744
  appliedFilters?.sortField || "delivery_date"
7482
7745
  );
7483
- const [rowsPerPage, setRowsPerPage] = (0, import_react33.useState)(defaultRowsPerPage);
7484
- const { classes } = useStyles46();
7746
+ const [rowsPerPage, setRowsPerPage] = (0, import_react34.useState)(defaultRowsPerPage);
7747
+ const { classes } = useStyles47();
7485
7748
  const rowHeight = 56;
7486
7749
  const emptyRows = rowsPerPage - Math.min(rowsPerPage, data.length - page * rowsPerPage);
7487
7750
  const handleRequestSort = (event, property) => {
@@ -7493,7 +7756,7 @@ var Table = ({
7493
7756
  updateSort(property, orderDir);
7494
7757
  }
7495
7758
  };
7496
- (0, import_react33.useLayoutEffect)(() => {
7759
+ (0, import_react34.useLayoutEffect)(() => {
7497
7760
  if (!doNotCalculateRows) {
7498
7761
  return;
7499
7762
  }
@@ -7519,25 +7782,25 @@ var Table = ({
7519
7782
  );
7520
7783
  const rowsComponents = rows.map((row) => {
7521
7784
  if (RenderItem) {
7522
- return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(RenderItem, { ...row }, row.id);
7785
+ return /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(RenderItem, { ...row }, row.id);
7523
7786
  }
7524
- return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_material60.TableRow, { hover: true, onClick: () => onRowClick?.(row), children: headCells?.map((column) => /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_material60.TableCell, { children: row[column.id] }, column.id)) }, row.id);
7787
+ return /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(import_material61.TableRow, { hover: true, onClick: () => onRowClick?.(row), children: headCells?.map((column) => /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(import_material61.TableCell, { children: row[column.id] }, column.id)) }, row.id);
7525
7788
  });
7526
7789
  if (emptyRows > 0 && rowsPerPage > emptyRows) {
7527
7790
  rowsComponents.push(
7528
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_material60.TableRow, { style: { height: rowHeight * emptyRows }, children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_material60.TableCell, { colSpan: 8 }) }, (0, import_uuid.v4)())
7791
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(import_material61.TableRow, { style: { height: rowHeight * emptyRows }, children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(import_material61.TableCell, { colSpan: 8 }) }, (0, import_uuid.v4)())
7529
7792
  );
7530
7793
  }
7531
7794
  return rowsComponents;
7532
7795
  };
7533
- return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_material60.Paper, { className: classes.root, children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_material60.Box, { className: classes.paper, children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(TableLoading_default, { rowHeight, rowsPerPage }) : /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_material60.TableContainer, { className: classes.container, children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_material60.Table, { size: "medium", stickyHeader: true, children: [
7534
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_material60.TableHead, { className: classes.header, children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_material60.TableRow, { children: headCells?.map((headCell) => /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
7535
- import_material60.TableCell,
7796
+ return /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(import_material61.Paper, { className: classes.root, children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(import_material61.Box, { className: classes.paper, children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(TableLoading_default, { rowHeight, rowsPerPage }) : /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(import_material61.TableContainer, { className: classes.container, children: /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(import_material61.Table, { size: "medium", stickyHeader: true, children: [
7797
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(import_material61.TableHead, { className: classes.header, children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(import_material61.TableRow, { children: headCells?.map((headCell) => /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
7798
+ import_material61.TableCell,
7536
7799
  {
7537
7800
  align: "left",
7538
7801
  sortDirection: orderBy === headCell.id ? order : void 0,
7539
- children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
7540
- import_material60.TableSortLabel,
7802
+ children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
7803
+ import_material61.TableSortLabel,
7541
7804
  {
7542
7805
  active: orderBy === headCell.id,
7543
7806
  direction: orderBy === headCell.id ? order : "asc",
@@ -7548,52 +7811,61 @@ var Table = ({
7548
7811
  },
7549
7812
  headCell.id
7550
7813
  )) }) }),
7551
- /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_material60.TableBody, { children: [
7814
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(import_material61.TableBody, { children: [
7552
7815
  getTableRows(),
7553
- rowsPerPage === emptyRows && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_material60.TableRow, { style: { height: rowHeight * emptyRows }, children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_material60.TableCell, { colSpan: 8, align: "center", children: "Nothing to display" }) })
7816
+ rowsPerPage === emptyRows && /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(import_material61.TableRow, { style: { height: rowHeight * emptyRows }, children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(import_material61.TableCell, { colSpan: 8, align: "center", children: "Nothing to display" }) })
7554
7817
  ] })
7555
7818
  ] }) }) }) });
7556
7819
  };
7557
7820
  var Table_default = Table;
7558
7821
 
7559
- // src/components/Table/TableDesktop.tsx
7560
- var import_react34 = require("react");
7561
- var import_material62 = require("@mui/material");
7562
- var import_mui54 = require("tss-react/mui");
7822
+ // src/components/TableDesktop/TableDesktop.tsx
7823
+ var import_react35 = require("react");
7824
+ var import_material63 = require("@mui/material");
7825
+ var import_mui55 = require("tss-react/mui");
7563
7826
  var import_uuid2 = require("uuid");
7564
7827
 
7565
- // src/components/Table/TableEmptyResult.tsx
7566
- var import_material61 = require("@mui/material");
7567
- var import_mui53 = require("tss-react/mui");
7568
- var import_jsx_runtime112 = require("react/jsx-runtime");
7569
- var useStyles47 = (0, import_mui53.makeStyles)()(() => ({
7828
+ // src/components/TableEmptyResult/TableEmptyResult.tsx
7829
+ var import_material62 = require("@mui/material");
7830
+ var import_mui54 = require("tss-react/mui");
7831
+ var import_jsx_runtime113 = require("react/jsx-runtime");
7832
+ var useStyles48 = (0, import_mui54.makeStyles)()(() => ({
7570
7833
  tableCellIcon: { padding: 24, height: "calc(100vh - 320px)" },
7571
7834
  tableCellDefault: { padding: 24 }
7572
7835
  }));
7573
7836
  var TableEmptyResult = ({
7837
+ colSpan,
7574
7838
  showClearFilterButton = false,
7575
7839
  handleClickOnClearFiltersButton = () => {
7576
7840
  }
7577
7841
  }) => {
7578
- const { classes } = useStyles47();
7579
- return showClearFilterButton ? /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(import_material61.TableRow, { children: /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(import_material61.TableCell, { className: classes.tableCellIcon, colSpan: 8, align: "center", children: [
7580
- /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(EmptyGlassIcon_default, {}),
7581
- /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(import_material61.Typography, { variant: "h6", children: "No results found." }),
7582
- /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(import_material61.Typography, { variant: "subtitle1", children: "Search without applied filters?" }),
7583
- /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
7584
- FilledButton_default,
7585
- {
7586
- copy: "Search",
7587
- variant: "contained",
7588
- color: "primary",
7589
- onClick: handleClickOnClearFiltersButton
7590
- }
7591
- )
7592
- ] }) }) : /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(import_material61.TableRow, { children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
7593
- import_material61.TableCell,
7842
+ const { classes } = useStyles48();
7843
+ return showClearFilterButton ? /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(import_material62.TableRow, { children: /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(
7844
+ import_material62.TableCell,
7845
+ {
7846
+ className: classes.tableCellIcon,
7847
+ colSpan,
7848
+ align: "center",
7849
+ children: [
7850
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(EmptyGlassIcon_default, {}),
7851
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(import_material62.Typography, { variant: "h6", children: "No results found." }),
7852
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(import_material62.Typography, { variant: "subtitle1", children: "Search without applied filters?" }),
7853
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
7854
+ FilledButton_default,
7855
+ {
7856
+ copy: "Search",
7857
+ variant: "contained",
7858
+ color: "primary",
7859
+ onClick: handleClickOnClearFiltersButton
7860
+ }
7861
+ )
7862
+ ]
7863
+ }
7864
+ ) }) : /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(import_material62.TableRow, { children: /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
7865
+ import_material62.TableCell,
7594
7866
  {
7595
7867
  className: classes.tableCellDefault,
7596
- colSpan: 8,
7868
+ colSpan,
7597
7869
  align: "center",
7598
7870
  children: "Nothing to display"
7599
7871
  }
@@ -7601,9 +7873,9 @@ var TableEmptyResult = ({
7601
7873
  };
7602
7874
  var TableEmptyResult_default = TableEmptyResult;
7603
7875
 
7604
- // src/components/Table/TableDesktop.tsx
7605
- var import_jsx_runtime113 = require("react/jsx-runtime");
7606
- var useStyles48 = (0, import_mui54.makeStyles)()(() => ({
7876
+ // src/components/TableDesktop/TableDesktop.tsx
7877
+ var import_jsx_runtime114 = require("react/jsx-runtime");
7878
+ var useStyles49 = (0, import_mui55.makeStyles)()((theme) => ({
7607
7879
  root: {
7608
7880
  justifyContent: "space-between",
7609
7881
  display: "flex",
@@ -7616,97 +7888,202 @@ var useStyles48 = (0, import_mui54.makeStyles)()(() => ({
7616
7888
  justifyContent: "space-between"
7617
7889
  },
7618
7890
  container: {
7619
- maxHeight: "100%"
7891
+ maxHeight: "100%",
7892
+ "&::-webkit-scrollbar": {
7893
+ width: "8px",
7894
+ height: "8px"
7895
+ },
7896
+ "&::-webkit-scrollbar-track": {
7897
+ backgroundColor: theme.palette.mode === "dark" ? theme.palette.grey[800] : theme.palette.grey[100]
7898
+ },
7899
+ "&::-webkit-scrollbar-thumb": {
7900
+ backgroundColor: theme.palette.mode === "dark" ? theme.palette.grey[900] : theme.palette.grey[400],
7901
+ borderRadius: "10px"
7902
+ },
7903
+ "&::-webkit-scrollbar-thumb:hover": {
7904
+ backgroundColor: theme.palette.mode === "dark" ? theme.palette.common.black : theme.palette.grey[500]
7905
+ }
7620
7906
  }
7621
7907
  }));
7622
- var desc = (a, b, orderBy) => {
7623
- if (b[orderBy] < a[orderBy]) {
7908
+ var descendingComparator2 = (a, b, orderBy) => {
7909
+ const objA = a[orderBy];
7910
+ const objB = b[orderBy];
7911
+ const valA = typeof objA === "object" ? objA?.name : objA;
7912
+ const valB = typeof objB === "object" ? objB?.name : objB;
7913
+ if (!valA && !valB) {
7914
+ return 0;
7915
+ }
7916
+ if (valA && !valB) {
7624
7917
  return -1;
7625
7918
  }
7626
- if (b[orderBy] > a[orderBy]) {
7919
+ if (!valA && valB) {
7920
+ return 1;
7921
+ }
7922
+ if (valA > valB) {
7923
+ return -1;
7924
+ }
7925
+ if (valA < valB) {
7627
7926
  return 1;
7628
7927
  }
7629
7928
  return 0;
7630
7929
  };
7631
- var stableSort2 = (array, cmp) => array.map((el, index) => [el, index]).sort((a, b) => {
7632
- const order = cmp(a[0], b[0]);
7633
- return order !== 0 ? order : a[1] - b[1];
7634
- }).map((el) => el[0]);
7635
- var getSorting2 = (order, orderBy) => order === "desc" ? (a, b) => desc(a, b, orderBy) : (a, b) => -desc(a, b, orderBy);
7930
+ var stableSort2 = (array, cmp) => array.map((el, index) => ({ el, index })).sort((a, b) => {
7931
+ const order = cmp(a.el, b.el);
7932
+ return order !== 0 ? order : a.index - b.index;
7933
+ }).map((el) => el.el);
7934
+ var getComparator = (order, orderBy) => order === "desc" ? (a, b) => descendingComparator2(a, b, orderBy) : (a, b) => -descendingComparator2(a, b, orderBy);
7636
7935
  var TableDesktop = ({
7637
- appliedFilters,
7638
- children,
7639
7936
  data,
7640
7937
  headCells,
7938
+ RenderItem,
7939
+ appliedFilters,
7940
+ headerFilters,
7941
+ children,
7641
7942
  height,
7642
7943
  isLoading,
7643
- RenderItem,
7644
- rowsPerPage,
7944
+ rowsPerPage = 50,
7945
+ enableCheckboxSelection = false,
7946
+ disableInternalSort = false,
7645
7947
  updateSort,
7646
7948
  showClearFilterButton,
7647
7949
  handleClickOnClearFiltersButton,
7648
7950
  deleteItem,
7649
- keyField
7951
+ keyField = "id",
7952
+ onApplyFilters
7650
7953
  }) => {
7651
- const [order, setOrder] = (0, import_react34.useState)(
7652
- appliedFilters?.sortDir || "desc"
7653
- );
7654
- const [orderBy, setOrderBy] = (0, import_react34.useState)(
7954
+ const [order, setOrder] = (0, import_react35.useState)(appliedFilters?.sortDir || "desc");
7955
+ const [orderBy, setOrderBy] = (0, import_react35.useState)(
7655
7956
  appliedFilters?.sortField || "delivery_date"
7656
7957
  );
7657
- const [page] = (0, import_react34.useState)(0);
7658
- const { classes } = useStyles48();
7958
+ const [selected, setSelected] = (0, import_react35.useState)([]);
7959
+ const [page] = (0, import_react35.useState)(0);
7960
+ const { classes } = useStyles49();
7659
7961
  const rowHeight = 56;
7962
+ const emptyRows = (0, import_react35.useMemo)(
7963
+ () => rowsPerPage - data.length,
7964
+ [rowsPerPage, data]
7965
+ );
7966
+ const visibleHeadCells = (0, import_react35.useMemo)(
7967
+ () => headCells.filter((headCell) => headCell?.enabled ?? true),
7968
+ [headCells]
7969
+ );
7970
+ const handleSelectAllClick = (0, import_react35.useCallback)(
7971
+ (event) => {
7972
+ if (event.target.checked) {
7973
+ const newSelected = data.map((n) => n[keyField]);
7974
+ setSelected(newSelected);
7975
+ return;
7976
+ }
7977
+ setSelected([]);
7978
+ },
7979
+ [data, keyField]
7980
+ );
7660
7981
  const handleRequestSort = (event, property) => {
7661
7982
  const isAsc = orderBy === property && order === "asc";
7662
7983
  const orderDir = isAsc ? "desc" : "asc";
7663
7984
  setOrder(orderDir);
7664
7985
  setOrderBy(property);
7665
- updateSort(property, orderDir);
7986
+ if (updateSort) {
7987
+ updateSort(property, orderDir);
7988
+ }
7666
7989
  };
7667
- const emptyRows = rowsPerPage - data.length;
7668
- return /* @__PURE__ */ (0, import_jsx_runtime113.jsx)("div", { className: classes.root, style: { height }, children: /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(import_material62.Paper, { className: classes.paper, children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime113.jsx)("div", { children: [...Array(Math.floor(rowsPerPage))].map(() => /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
7669
- import_material62.Skeleton,
7990
+ const handleRowCheckboxClick = (0, import_react35.useCallback)(
7991
+ (event, keyFieldValue) => {
7992
+ const selectedIndex = selected.indexOf(keyFieldValue);
7993
+ let newSelected = [];
7994
+ if (selectedIndex === -1) {
7995
+ newSelected = newSelected.concat(selected, keyFieldValue);
7996
+ } else if (selectedIndex === 0) {
7997
+ newSelected = newSelected.concat(selected.slice(1));
7998
+ } else if (selectedIndex === selected.length - 1) {
7999
+ newSelected = newSelected.concat(selected.slice(0, -1));
8000
+ } else if (selectedIndex > 0) {
8001
+ newSelected = newSelected.concat(
8002
+ selected.slice(0, selectedIndex),
8003
+ selected.slice(selectedIndex + 1)
8004
+ );
8005
+ }
8006
+ setSelected(newSelected);
8007
+ },
8008
+ [selected]
8009
+ );
8010
+ const renderTableRows = (0, import_react35.useMemo)(() => {
8011
+ const sortedData = disableInternalSort ? data : stableSort2(data, getComparator(order, orderBy));
8012
+ return sortedData.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage).map((row, index) => {
8013
+ const isItemSelected = selected.includes(row[keyField]);
8014
+ return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
8015
+ RenderItem,
8016
+ {
8017
+ ...{
8018
+ ...row,
8019
+ index,
8020
+ deleteItem,
8021
+ isItemSelected,
8022
+ enableCheckboxSelection,
8023
+ keyFieldValue: row[keyField],
8024
+ handleRowCheckboxClick,
8025
+ visibleHeadCells
8026
+ }
8027
+ },
8028
+ row[keyField] ?? index
8029
+ );
8030
+ });
8031
+ }, [
8032
+ data,
8033
+ order,
8034
+ orderBy,
8035
+ page,
8036
+ rowsPerPage,
8037
+ selected,
8038
+ enableCheckboxSelection,
8039
+ disableInternalSort,
8040
+ deleteItem,
8041
+ keyField,
8042
+ handleRowCheckboxClick,
8043
+ visibleHeadCells,
8044
+ RenderItem
8045
+ ]);
8046
+ return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("div", { className: classes.root, style: { height }, children: /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(import_material63.Paper, { className: classes.paper, children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(import_jsx_runtime114.Fragment, { children: [...Array(Math.floor(rowsPerPage ?? 50))].map(() => /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
8047
+ import_material63.Skeleton,
7670
8048
  {
7671
8049
  animation: "pulse",
7672
8050
  style: { margin: "8px", opacity: 0.4 },
7673
8051
  variant: "rectangular",
7674
- height: rowHeight
8052
+ height: rowHeight,
8053
+ "data-testid": "loading-skeleton"
7675
8054
  },
7676
- Math.random()
7677
- )) }) : /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(import_jsx_runtime113.Fragment, { children: [
7678
- /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(import_material62.TableContainer, { className: classes.container, children: /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(
7679
- import_material62.Table,
8055
+ (0, import_uuid2.v4)()
8056
+ )) }) : /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(import_jsx_runtime114.Fragment, { children: [
8057
+ /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(import_material63.TableContainer, { className: classes.container, children: /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(
8058
+ import_material63.Table,
7680
8059
  {
7681
8060
  "aria-labelledby": "tableTitle",
7682
8061
  "aria-label": "sticky table",
7683
8062
  stickyHeader: true,
7684
8063
  children: [
7685
- /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
8064
+ /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
7686
8065
  SmartTableHeader_default,
7687
8066
  {
7688
- headCells,
8067
+ headCells: visibleHeadCells,
7689
8068
  order,
7690
8069
  orderBy,
7691
- onRequestSort: handleRequestSort
8070
+ numSelected: selected.length,
8071
+ numRows: data.length,
8072
+ enableCheckboxSelection,
8073
+ headerFilters: headerFilters ?? {},
8074
+ onRequestSort: handleRequestSort,
8075
+ onSelectAllClick: handleSelectAllClick,
8076
+ onApplyFilters
7692
8077
  }
7693
8078
  ),
7694
- /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(import_material62.TableBody, { children: [
7695
- stableSort2(data, getSorting2(order, orderBy)).slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage).map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
7696
- RenderItem,
7697
- {
7698
- ...{ ...item, index, deleteItem }
7699
- },
7700
- item[keyField] || (0, import_uuid2.v4)()
7701
- )),
7702
- rowsPerPage === emptyRows && /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
7703
- TableEmptyResult_default,
7704
- {
7705
- showClearFilterButton,
7706
- handleClickOnClearFiltersButton
7707
- }
7708
- )
7709
- ] })
8079
+ /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(import_material63.TableBody, { children: rowsPerPage !== emptyRows ? renderTableRows : /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
8080
+ TableEmptyResult_default,
8081
+ {
8082
+ colSpan: enableCheckboxSelection ? visibleHeadCells.length + 1 : visibleHeadCells.length,
8083
+ showClearFilterButton,
8084
+ handleClickOnClearFiltersButton
8085
+ }
8086
+ ) })
7710
8087
  ]
7711
8088
  }
7712
8089
  ) }),
@@ -7716,12 +8093,12 @@ var TableDesktop = ({
7716
8093
  var TableDesktop_default = TableDesktop;
7717
8094
 
7718
8095
  // src/components/TableHeader/TableHeader.tsx
7719
- var import_react35 = require("react");
7720
- var import_icons_material14 = require("@mui/icons-material");
7721
- var import_material63 = require("@mui/material");
7722
- var import_mui55 = require("tss-react/mui");
7723
- var import_jsx_runtime114 = require("react/jsx-runtime");
7724
- var useStyles49 = (0, import_mui55.makeStyles)()(() => ({
8096
+ var import_react36 = require("react");
8097
+ var import_icons_material15 = require("@mui/icons-material");
8098
+ var import_material64 = require("@mui/material");
8099
+ var import_mui56 = require("tss-react/mui");
8100
+ var import_jsx_runtime115 = require("react/jsx-runtime");
8101
+ var useStyles50 = (0, import_mui56.makeStyles)()(() => ({
7725
8102
  sortLabel: {
7726
8103
  "& .MuiTableSortLabel-icon": {
7727
8104
  opacity: 1
@@ -7729,9 +8106,9 @@ var useStyles49 = (0, import_mui55.makeStyles)()(() => ({
7729
8106
  }
7730
8107
  }));
7731
8108
  var TableHeader = ({ cells, onSort = null }) => {
7732
- const [sortableCells, setSortableCells] = (0, import_react35.useState)([]);
7733
- const { classes } = useStyles49();
7734
- (0, import_react35.useEffect)(() => {
8109
+ const [sortableCells, setSortableCells] = (0, import_react36.useState)([]);
8110
+ const { classes } = useStyles50();
8111
+ (0, import_react36.useEffect)(() => {
7735
8112
  setSortableCells(cells);
7736
8113
  }, []);
7737
8114
  const getNewSortDirection = (direction) => {
@@ -7765,24 +8142,24 @@ var TableHeader = ({ cells, onSort = null }) => {
7765
8142
  });
7766
8143
  setSortableCells(sortedCells);
7767
8144
  };
7768
- return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(import_material63.TableHead, { children: /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(import_material63.TableRow, { children: sortableCells.map((cell, key) => /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(import_material63.TableCell, { children: cell.isSortable ? /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
7769
- import_material63.TableSortLabel,
8145
+ return /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_material64.TableHead, { children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_material64.TableRow, { children: sortableCells.map((cell, key) => /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_material64.TableCell, { children: cell.isSortable ? /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
8146
+ import_material64.TableSortLabel,
7770
8147
  {
7771
8148
  className: classes.sortLabel,
7772
8149
  direction: cell?.direction || "asc",
7773
- IconComponent: import_icons_material14.ImportExport,
8150
+ IconComponent: import_icons_material15.ImportExport,
7774
8151
  onClick: () => handleSortClick(cell),
7775
8152
  children: cell.label
7776
8153
  }
7777
8154
  ) : cell.label }, cell.label || key)) }) });
7778
8155
  };
7779
- var TableHeader_default = (0, import_react35.memo)(TableHeader);
8156
+ var TableHeader_default = (0, import_react36.memo)(TableHeader);
7780
8157
 
7781
8158
  // src/components/TextDivider/TextDivider.tsx
7782
- var import_material64 = require("@mui/material");
7783
- var import_mui56 = require("tss-react/mui");
7784
- var import_jsx_runtime115 = require("react/jsx-runtime");
7785
- var useStyles50 = (0, import_mui56.makeStyles)()(() => ({
8159
+ var import_material65 = require("@mui/material");
8160
+ var import_mui57 = require("tss-react/mui");
8161
+ var import_jsx_runtime116 = require("react/jsx-runtime");
8162
+ var useStyles51 = (0, import_mui57.makeStyles)()(() => ({
7786
8163
  icon: {
7787
8164
  fontSize: 20
7788
8165
  },
@@ -7816,21 +8193,21 @@ var TextDivider = ({
7816
8193
  iconPosition = "left",
7817
8194
  titleWeight = "400"
7818
8195
  }) => {
7819
- const { classes } = useStyles50();
8196
+ const { classes } = useStyles51();
7820
8197
  const iconColor = color ?? colors.neutral900;
7821
- return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
7822
- import_material64.Box,
8198
+ return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
8199
+ import_material65.Box,
7823
8200
  {
7824
8201
  display: "flex",
7825
8202
  alignItems: "center",
7826
8203
  justifyContent: "space-between",
7827
8204
  className: classes.container,
7828
8205
  children: [
7829
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_material64.Divider, { className: classes.leftDivider }),
7830
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_material64.Button, { onClick, disabled: !onClick, className: classes.button, children: /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(import_material64.Box, { className: classes.center, children: [
7831
- Icon3 && iconPosition === "left" && /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(Icon3, { className: classes.icon, style: { color: iconColor } }),
7832
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
7833
- import_material64.Typography,
8206
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_material65.Divider, { className: classes.leftDivider }),
8207
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_material65.Button, { onClick, disabled: !onClick, className: classes.button, children: /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(import_material65.Box, { className: classes.center, children: [
8208
+ Icon3 && iconPosition === "left" && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Icon3, { className: classes.icon, style: { color: iconColor } }),
8209
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
8210
+ import_material65.Typography,
7834
8211
  {
7835
8212
  color: "textSecondary",
7836
8213
  className: classes.title,
@@ -7838,9 +8215,9 @@ var TextDivider = ({
7838
8215
  children: title
7839
8216
  }
7840
8217
  ),
7841
- Icon3 && iconPosition === "right" && /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(Icon3, { className: classes.icon, style: { color: iconColor } })
8218
+ Icon3 && iconPosition === "right" && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Icon3, { className: classes.icon, style: { color: iconColor } })
7842
8219
  ] }) }),
7843
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_material64.Divider, { className: classes.rightDivider })
8220
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_material65.Divider, { className: classes.rightDivider })
7844
8221
  ]
7845
8222
  }
7846
8223
  );
@@ -7849,12 +8226,12 @@ var TextDivider_default = TextDivider;
7849
8226
 
7850
8227
  // src/components/ThemedDateRangePicker/ThemedDateRangePicker.tsx
7851
8228
  var import_react_dates = require("react-dates");
7852
- var import_mui57 = require("tss-react/mui");
8229
+ var import_mui58 = require("tss-react/mui");
7853
8230
  var import_initialize = require("react-dates/initialize");
7854
8231
  var import_datepicker = require("react-dates/lib/css/_datepicker.css");
7855
- var import_classnames3 = __toESM(require("classnames"), 1);
7856
- var import_jsx_runtime116 = require("react/jsx-runtime");
7857
- var useStyles51 = (0, import_mui57.makeStyles)()((theme) => ({
8232
+ var import_classnames4 = __toESM(require("classnames"), 1);
8233
+ var import_jsx_runtime117 = require("react/jsx-runtime");
8234
+ var useStyles52 = (0, import_mui58.makeStyles)()((theme) => ({
7858
8235
  wrapper: {
7859
8236
  "& .DateRangePicker": {
7860
8237
  backgroundColor: theme.palette.mode === "dark" ? theme.palette.grey[900] : colors.neutral100,
@@ -7947,17 +8324,17 @@ var ThemedDateRangePicker = ({
7947
8324
  className,
7948
8325
  ...props
7949
8326
  }) => {
7950
- const { classes } = useStyles51();
7951
- return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("div", { className: (0, import_classnames3.default)(classes.wrapper, className), children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_react_dates.DateRangePicker, { ...props }) });
8327
+ const { classes } = useStyles52();
8328
+ return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("div", { className: (0, import_classnames4.default)(classes.wrapper, className), children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(import_react_dates.DateRangePicker, { ...props }) });
7952
8329
  };
7953
8330
  var ThemedDateRangePicker_default = ThemedDateRangePicker;
7954
8331
 
7955
8332
  // src/components/TheToolbar/TheToolbar.tsx
7956
- var import_react36 = require("react");
7957
- var import_material65 = require("@mui/material");
7958
- var import_mui58 = require("tss-react/mui");
7959
- var import_jsx_runtime117 = require("react/jsx-runtime");
7960
- var useStyles52 = (0, import_mui58.makeStyles)()((theme) => ({
8333
+ var import_react37 = require("react");
8334
+ var import_material66 = require("@mui/material");
8335
+ var import_mui59 = require("tss-react/mui");
8336
+ var import_jsx_runtime118 = require("react/jsx-runtime");
8337
+ var useStyles53 = (0, import_mui59.makeStyles)()((theme) => ({
7961
8338
  menuButton: {
7962
8339
  color: theme.palette.primary.contrastText
7963
8340
  },
@@ -7994,10 +8371,10 @@ var TheToolbar = ({
7994
8371
  handleOpen,
7995
8372
  LeftDrawer: LeftDrawer2
7996
8373
  }) => {
7997
- const { classes } = useStyles52();
7998
- return /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(import_material65.Box, { children: [
7999
- /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(import_material65.AppBar, { children: /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(import_material65.Toolbar, { className: classes.topBar, children: [
8000
- /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
8374
+ const { classes } = useStyles53();
8375
+ return /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(import_material66.Box, { children: [
8376
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(import_material66.AppBar, { children: /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(import_material66.Toolbar, { className: classes.topBar, children: [
8377
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
8001
8378
  RoundButton_default,
8002
8379
  {
8003
8380
  className: classes.menuButton,
@@ -8006,7 +8383,7 @@ var TheToolbar = ({
8006
8383
  onClick: handleOpen
8007
8384
  }
8008
8385
  ),
8009
- /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
8386
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
8010
8387
  CompanyLogo_default,
8011
8388
  {
8012
8389
  size: "small",
@@ -8016,29 +8393,29 @@ var TheToolbar = ({
8016
8393
  }
8017
8394
  )
8018
8395
  ] }) }),
8019
- /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(import_material65.Box, { className: classes.offset }),
8396
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(import_material66.Box, { className: classes.offset }),
8020
8397
  LeftDrawer2
8021
8398
  ] });
8022
8399
  };
8023
- var TheToolbar_default = (0, import_react36.memo)(TheToolbar);
8400
+ var TheToolbar_default = (0, import_react37.memo)(TheToolbar);
8024
8401
 
8025
8402
  // src/components/ToastMessage/ToastMessage.tsx
8026
- var import_material66 = require("@mui/material");
8027
- var import_jsx_runtime118 = require("react/jsx-runtime");
8403
+ var import_material67 = require("@mui/material");
8404
+ var import_jsx_runtime119 = require("react/jsx-runtime");
8028
8405
  var ToastMessage = ({
8029
8406
  toastType,
8030
8407
  toastMessage,
8031
8408
  open,
8032
8409
  onClose
8033
- }) => /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
8034
- import_material66.Snackbar,
8410
+ }) => /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
8411
+ import_material67.Snackbar,
8035
8412
  {
8036
8413
  open,
8037
8414
  autoHideDuration: 1500,
8038
8415
  onClose,
8039
8416
  anchorOrigin: { vertical: "top", horizontal: "right" },
8040
- children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
8041
- import_material66.Alert,
8417
+ children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
8418
+ import_material67.Alert,
8042
8419
  {
8043
8420
  elevation: 6,
8044
8421
  variant: "filled",
@@ -8064,10 +8441,10 @@ var ToastMessage = ({
8064
8441
  var ToastMessage_default = ToastMessage;
8065
8442
 
8066
8443
  // src/components/TwoButtonDialog/TwoButtonDialog.tsx
8067
- var import_material67 = require("@mui/material");
8068
- var import_mui59 = require("tss-react/mui");
8069
- var import_jsx_runtime119 = require("react/jsx-runtime");
8070
- var useStyles53 = (0, import_mui59.makeStyles)()((theme) => ({
8444
+ var import_material68 = require("@mui/material");
8445
+ var import_mui60 = require("tss-react/mui");
8446
+ var import_jsx_runtime120 = require("react/jsx-runtime");
8447
+ var useStyles54 = (0, import_mui60.makeStyles)()((theme) => ({
8071
8448
  paper: {
8072
8449
  padding: theme.spacing(2)
8073
8450
  },
@@ -8095,23 +8472,23 @@ var TwoButtonDialog = ({
8095
8472
  cancelLabel = "CANCEL",
8096
8473
  cancelButton
8097
8474
  }) => {
8098
- const { classes } = useStyles53();
8099
- return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
8100
- import_material67.Dialog,
8475
+ const { classes } = useStyles54();
8476
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
8477
+ import_material68.Dialog,
8101
8478
  {
8102
8479
  open,
8103
8480
  disableEnforceFocus: true,
8104
8481
  maxWidth: "sm",
8105
8482
  fullWidth: true,
8106
8483
  closeAfterTransition: true,
8107
- BackdropComponent: import_material67.Backdrop,
8484
+ BackdropComponent: import_material68.Backdrop,
8108
8485
  BackdropProps: {
8109
8486
  timeout: 500
8110
8487
  },
8111
- children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(import_material67.Fade, { in: open, children: /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(import_material67.Paper, { className: classes.paper, children: [
8112
- /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(import_material67.Box, { className: classes.mb, children: [
8113
- /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(import_material67.Typography, { variant: "h5", component: "div", children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
8114
- import_material67.Box,
8488
+ children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_material68.Fade, { in: open, children: /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(import_material68.Paper, { className: classes.paper, children: [
8489
+ /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(import_material68.Box, { className: classes.mb, children: [
8490
+ /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_material68.Typography, { variant: "h5", component: "div", children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
8491
+ import_material68.Box,
8115
8492
  {
8116
8493
  sx: {
8117
8494
  fontWeight: 600
@@ -8119,23 +8496,23 @@ var TwoButtonDialog = ({
8119
8496
  children: title
8120
8497
  }
8121
8498
  ) }),
8122
- /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(
8123
- import_material67.Box,
8499
+ /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(
8500
+ import_material68.Box,
8124
8501
  {
8125
8502
  className: classes.mt,
8126
8503
  sx: {
8127
8504
  fontWeight: 600
8128
8505
  },
8129
8506
  children: [
8130
- subtitle1 && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(import_material67.Typography, { variant: "subtitle1", children: subtitle1 }),
8131
- subtitle2 && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(import_material67.Typography, { variant: "subtitle1", children: subtitle2 })
8507
+ subtitle1 && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_material68.Typography, { variant: "subtitle1", children: subtitle1 }),
8508
+ subtitle2 && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_material68.Typography, { variant: "subtitle1", children: subtitle2 })
8132
8509
  ]
8133
8510
  }
8134
8511
  )
8135
8512
  ] }),
8136
- /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(import_material67.Divider, {}),
8137
- /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(import_material67.Box, { className: classes.buttonContainer, children: [
8138
- /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
8513
+ /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_material68.Divider, {}),
8514
+ /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(import_material68.Box, { className: classes.buttonContainer, children: [
8515
+ /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
8139
8516
  FilledButton_default,
8140
8517
  {
8141
8518
  copy: cancelLabel,
@@ -8148,7 +8525,7 @@ var TwoButtonDialog = ({
8148
8525
  }
8149
8526
  }
8150
8527
  ),
8151
- /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
8528
+ /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
8152
8529
  FilledButton_default,
8153
8530
  {
8154
8531
  color: "primary",
@@ -8157,7 +8534,7 @@ var TwoButtonDialog = ({
8157
8534
  }
8158
8535
  )
8159
8536
  ] }),
8160
- /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(Loading_default, { isLoading: dialogLoading })
8537
+ /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(Loading_default, { isLoading: dialogLoading })
8161
8538
  ] }) })
8162
8539
  }
8163
8540
  );
@@ -8222,6 +8599,7 @@ var TwoButtonDialog_default = TwoButtonDialog;
8222
8599
  SectionName,
8223
8600
  SmartSelect,
8224
8601
  SmartTableHeader,
8602
+ SmartTableHeaderFilterMenu,
8225
8603
  SquareButton,
8226
8604
  SquareLabel,
8227
8605
  Switch,