@natoora-libs/core 0.1.16-dev-doug-5 → 0.1.16-dev-doug-7

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.
@@ -7276,10 +7276,32 @@ var TableDesktopFooter = ({
7276
7276
  );
7277
7277
  };
7278
7278
 
7279
+ // src/components/TableDesktopLoadingState/TableDesktopLoadingState.tsx
7280
+ import { Skeleton as Skeleton4, TableCell as TableCell3, TableRow as TableRow3 } from "@mui/material";
7281
+ import { jsx as jsx114 } from "react/jsx-runtime";
7282
+ var getRange = (n) => Array.from({ length: n }, (_, i) => i + 1);
7283
+ var TableDesktopLoadingState = ({
7284
+ numRows,
7285
+ rowsPerPage,
7286
+ numColumns,
7287
+ rowHeight
7288
+ }) => {
7289
+ return getRange(Math.min(numRows, rowsPerPage)).map((rowNum) => /* @__PURE__ */ jsx114(TableRow3, { children: getRange(numColumns).map((colNum) => /* @__PURE__ */ jsx114(TableCell3, { children: /* @__PURE__ */ jsx114(
7290
+ Skeleton4,
7291
+ {
7292
+ animation: "pulse",
7293
+ variant: "rounded",
7294
+ height: rowHeight - 33,
7295
+ sx: { bgcolor: colors.neutral100 },
7296
+ "data-testid": "loading-skeleton"
7297
+ }
7298
+ ) }, colNum)) }, rowNum));
7299
+ };
7300
+
7279
7301
  // src/components/TableDesktopNoColumnsMessage/TableDesktopNoColumnsMessage.tsx
7280
7302
  import TableBody2 from "@mui/material/TableBody";
7281
- import TableCell3 from "@mui/material/TableCell";
7282
- import TableRow3 from "@mui/material/TableRow";
7303
+ import TableCell4 from "@mui/material/TableCell";
7304
+ import TableRow4 from "@mui/material/TableRow";
7283
7305
  import Typography27 from "@mui/material/Typography";
7284
7306
 
7285
7307
  // src/components/Buttons/BaseButton/BaseIconButton.tsx
@@ -7307,11 +7329,11 @@ var BaseIconButton = ({ icon, sx, ...props }) => {
7307
7329
  };
7308
7330
 
7309
7331
  // src/components/TableDesktopNoColumnsMessage/TableDesktopNoColumnsMessage.tsx
7310
- import { jsx as jsx114, jsxs as jsxs78 } from "react/jsx-runtime";
7332
+ import { jsx as jsx115, jsxs as jsxs78 } from "react/jsx-runtime";
7311
7333
  var TableDesktopNoColumnsMessage = ({
7312
7334
  onClickNoColumnsMessageOpenMenu
7313
- }) => /* @__PURE__ */ jsx114(TableBody2, { children: /* @__PURE__ */ jsx114(TableRow3, { children: /* @__PURE__ */ jsxs78(
7314
- TableCell3,
7335
+ }) => /* @__PURE__ */ jsx115(TableBody2, { children: /* @__PURE__ */ jsx115(TableRow4, { children: /* @__PURE__ */ jsxs78(
7336
+ TableCell4,
7315
7337
  {
7316
7338
  sx: {
7317
7339
  py: 8,
@@ -7323,8 +7345,8 @@ var TableDesktopNoColumnsMessage = ({
7323
7345
  alignItems: "center"
7324
7346
  },
7325
7347
  children: [
7326
- /* @__PURE__ */ jsx114(Typography27, { variant: "subtitle2", fontSize: 16, children: "Customise your view" }),
7327
- /* @__PURE__ */ jsx114(Typography27, { variant: "subtitle1", align: "center", color: "textSecondary", children: "Open the menu to customise your table and search." }),
7348
+ /* @__PURE__ */ jsx115(Typography27, { variant: "subtitle2", fontSize: 16, children: "Customise your view" }),
7349
+ /* @__PURE__ */ jsx115(Typography27, { variant: "subtitle1", align: "center", color: "textSecondary", children: "Open the menu to customise your table and search." }),
7328
7350
  /* @__PURE__ */ jsxs78(
7329
7351
  Typography27,
7330
7352
  {
@@ -7338,18 +7360,18 @@ var TableDesktopNoColumnsMessage = ({
7338
7360
  },
7339
7361
  children: [
7340
7362
  "Tips: ",
7341
- /* @__PURE__ */ jsx114(Typography27, { component: "strong", children: "Save as default" }),
7363
+ /* @__PURE__ */ jsx115(Typography27, { component: "strong", children: "Save as default" }),
7342
7364
  " to keep these columns for future views"
7343
7365
  ]
7344
7366
  }
7345
7367
  ),
7346
- /* @__PURE__ */ jsx114(
7368
+ /* @__PURE__ */ jsx115(
7347
7369
  BaseIconButton,
7348
7370
  {
7349
7371
  variant: "contained",
7350
7372
  color: "primary",
7351
7373
  onClick: onClickNoColumnsMessageOpenMenu,
7352
- icon: /* @__PURE__ */ jsx114(IconTableEdit_default, { fill: colors.white }),
7374
+ icon: /* @__PURE__ */ jsx115(IconTableEdit_default, { fill: colors.white }),
7353
7375
  children: "OPEN MENU"
7354
7376
  }
7355
7377
  )
@@ -7357,28 +7379,6 @@ var TableDesktopNoColumnsMessage = ({
7357
7379
  }
7358
7380
  ) }) });
7359
7381
 
7360
- // src/components/TableDesktopLoadingState/TableDesktopLoadingState.tsx
7361
- import { Skeleton as Skeleton4, TableCell as TableCell4, TableRow as TableRow4 } from "@mui/material";
7362
- import { jsx as jsx115 } from "react/jsx-runtime";
7363
- var getRange = (n) => Array.from({ length: n }, (_, i) => i + 1);
7364
- var TableDesktopLoadingState = ({
7365
- numRows,
7366
- rowsPerPage,
7367
- numColumns,
7368
- rowHeight
7369
- }) => {
7370
- return getRange(Math.min(numRows, rowsPerPage)).map((rowNum) => /* @__PURE__ */ jsx115(TableRow4, { children: getRange(numColumns).map((colNum) => /* @__PURE__ */ jsx115(TableCell4, { children: /* @__PURE__ */ jsx115(
7371
- Skeleton4,
7372
- {
7373
- animation: "pulse",
7374
- variant: "rounded",
7375
- height: rowHeight - 33,
7376
- sx: { bgcolor: colors.neutral100 },
7377
- "data-testid": "loading-skeleton"
7378
- }
7379
- ) }, colNum)) }, rowNum));
7380
- };
7381
-
7382
7382
  // src/components/TableDesktopRows/TableDesktopRows.tsx
7383
7383
  import { jsx as jsx116 } from "react/jsx-runtime";
7384
7384
  var descendingComparator2 = (a, b, orderBy) => {
@@ -7415,8 +7415,6 @@ var TableDesktopRows = ({
7415
7415
  keyField,
7416
7416
  order,
7417
7417
  orderBy,
7418
- rowsPerPage,
7419
- isLoading,
7420
7418
  disableInternalSort,
7421
7419
  enableCheckboxSelection,
7422
7420
  enableEditMode,
@@ -7426,17 +7424,6 @@ var TableDesktopRows = ({
7426
7424
  deleteItem
7427
7425
  }) => {
7428
7426
  const sortedData = disableInternalSort ? data : stableSort2(data, getComparator(order, orderBy));
7429
- if (isLoading) {
7430
- return /* @__PURE__ */ jsx116(
7431
- TableDesktopLoadingState,
7432
- {
7433
- numRows: data.length,
7434
- rowsPerPage,
7435
- numColumns: visibleHeadCells.length + (enableCheckboxSelection ? 1 : 0),
7436
- rowHeight
7437
- }
7438
- );
7439
- }
7440
7427
  return sortedData.map((row, index) => {
7441
7428
  const isItemSelected = selectedRows.has(row[keyField]);
7442
7429
  return /* @__PURE__ */ jsx116(
@@ -7557,7 +7544,7 @@ var TableEmptyResult_default = TableEmptyResult;
7557
7544
  // src/components/TableDesktop/TableDesktop.tsx
7558
7545
  import { Fragment as Fragment12, jsx as jsx119, jsxs as jsxs81 } from "react/jsx-runtime";
7559
7546
  var TableDesktop = ({
7560
- data,
7547
+ data = [],
7561
7548
  headCells,
7562
7549
  RenderItem,
7563
7550
  appliedFilters,
@@ -7674,6 +7661,53 @@ var TableDesktop = ({
7674
7661
  );
7675
7662
  }
7676
7663
  }, [data, setSelectedRows, isEveryRowInPageSelected, isRowsFromAllPagesSelected]);
7664
+ const renderBody = useMemo3(
7665
+ () => rowsPerPage !== emptyRows ? /* @__PURE__ */ jsx119(
7666
+ TableDesktopRows,
7667
+ {
7668
+ data,
7669
+ RenderItem,
7670
+ visibleHeadCells,
7671
+ keyField,
7672
+ order,
7673
+ orderBy,
7674
+ disableInternalSort,
7675
+ enableCheckboxSelection,
7676
+ enableEditMode,
7677
+ selectedRows,
7678
+ handleRowCheckboxChange,
7679
+ rowHeight,
7680
+ deleteItem
7681
+ }
7682
+ ) : /* @__PURE__ */ jsx119(
7683
+ TableEmptyResult_default,
7684
+ {
7685
+ colSpan: enableCheckboxSelection ? visibleHeadCells.length + 1 : visibleHeadCells.length,
7686
+ showClearFilterButton,
7687
+ handleClickOnClearFiltersButton
7688
+ }
7689
+ ),
7690
+ [
7691
+ rowsPerPage,
7692
+ emptyRows,
7693
+ data,
7694
+ RenderItem,
7695
+ visibleHeadCells,
7696
+ keyField,
7697
+ order,
7698
+ orderBy,
7699
+ isLoading,
7700
+ disableInternalSort,
7701
+ enableCheckboxSelection,
7702
+ enableEditMode,
7703
+ selectedRows,
7704
+ handleRowCheckboxChange,
7705
+ rowHeight,
7706
+ deleteItem,
7707
+ showClearFilterButton,
7708
+ handleClickOnClearFiltersButton
7709
+ ]
7710
+ );
7677
7711
  return /* @__PURE__ */ jsx119(
7678
7712
  Box34,
7679
7713
  {
@@ -7740,7 +7774,7 @@ var TableDesktop = ({
7740
7774
  stickyHeader: true,
7741
7775
  "aria-label": "sticky-table",
7742
7776
  sx: { tableLayout },
7743
- children: visibleHeadCells.length === 0 ? /* @__PURE__ */ jsx119(
7777
+ children: visibleHeadCells.length === 0 && !isLoading ? /* @__PURE__ */ jsx119(
7744
7778
  TableDesktopNoColumnsMessage,
7745
7779
  {
7746
7780
  onClickNoColumnsMessageOpenMenu: toolbarProps?.onClickToolbarMenuOpen
@@ -7762,31 +7796,13 @@ var TableDesktop = ({
7762
7796
  shouldShowCheckOnFilter
7763
7797
  }
7764
7798
  ),
7765
- /* @__PURE__ */ jsx119(TableBody3, { children: rowsPerPage !== emptyRows ? /* @__PURE__ */ jsx119(
7766
- TableDesktopRows,
7799
+ /* @__PURE__ */ jsx119(TableBody3, { children: !isLoading ? renderBody : /* @__PURE__ */ jsx119(
7800
+ TableDesktopLoadingState,
7767
7801
  {
7768
- data,
7769
- RenderItem,
7770
- visibleHeadCells,
7771
- keyField,
7772
- order,
7773
- orderBy,
7802
+ numRows: data.length,
7774
7803
  rowsPerPage,
7775
- isLoading,
7776
- disableInternalSort,
7777
- enableCheckboxSelection,
7778
- enableEditMode,
7779
- selectedRows,
7780
- handleRowCheckboxChange,
7781
- rowHeight,
7782
- deleteItem
7783
- }
7784
- ) : /* @__PURE__ */ jsx119(
7785
- TableEmptyResult_default,
7786
- {
7787
- colSpan: enableCheckboxSelection ? visibleHeadCells.length + 1 : visibleHeadCells.length,
7788
- showClearFilterButton,
7789
- handleClickOnClearFiltersButton
7804
+ numColumns: visibleHeadCells.length + (enableCheckboxSelection ? 1 : 0),
7805
+ rowHeight
7790
7806
  }
7791
7807
  ) })
7792
7808
  ] })
@@ -7807,7 +7823,7 @@ var TableDesktop = ({
7807
7823
  import { Checkbox as Checkbox6, FormControlLabel as FormControlLabel4 } from "@mui/material";
7808
7824
 
7809
7825
  // src/components/TableDesktopEditableComponent/TableDesktopNumericField.tsx
7810
- import { useState as useState18 } from "react";
7826
+ import { useState as useState18, useRef as useRef5 } from "react";
7811
7827
  import { TextField as TextField8 } from "@mui/material";
7812
7828
  import { jsx as jsx120 } from "react/jsx-runtime";
7813
7829
  var TableDesktopNumericField = ({
@@ -7821,10 +7837,13 @@ var TableDesktopNumericField = ({
7821
7837
  onUpdateEditableCell
7822
7838
  }) => {
7823
7839
  const [input, setInput] = useState18(initialValue);
7840
+ const oldValue = useRef5(initialValue);
7824
7841
  const commitValue = (value) => {
7825
- if (!onUpdateEditableCell) {
7842
+ const isDirty = value !== oldValue.current;
7843
+ if (!onUpdateEditableCell || !isDirty) {
7826
7844
  return;
7827
7845
  }
7846
+ oldValue.current = value;
7828
7847
  onUpdateEditableCell(rowId ?? 0, field, value, value);
7829
7848
  };
7830
7849
  const handleKeyDown = (e) => {
@@ -7933,7 +7952,7 @@ var TableDesktopSmartSelect = memo22(({
7933
7952
  });
7934
7953
 
7935
7954
  // src/components/TableDesktopEditableComponent/TableDesktopTextField.tsx
7936
- import { useMemo as useMemo4, useState as useState20 } from "react";
7955
+ import { useMemo as useMemo4, useState as useState20, useRef as useRef6 } from "react";
7937
7956
  import { TextField as TextField9 } from "@mui/material";
7938
7957
  import { jsx as jsx122 } from "react/jsx-runtime";
7939
7958
  var TableDesktopTextField = ({
@@ -7948,11 +7967,14 @@ var TableDesktopTextField = ({
7948
7967
  onUpdateEditableCell
7949
7968
  }) => {
7950
7969
  const [input, setInput] = useState20(initialValue);
7970
+ const oldValue = useRef6(initialValue);
7951
7971
  const hasValidationError = useMemo4(() => !validateInput?.(input), [input, validateInput]);
7952
7972
  const commitValue = (value) => {
7953
- if (hasValidationError || !onUpdateEditableCell) {
7973
+ const isDirty = value !== oldValue.current;
7974
+ if (hasValidationError || !onUpdateEditableCell || !isDirty) {
7954
7975
  return;
7955
7976
  }
7977
+ oldValue.current = value;
7956
7978
  onUpdateEditableCell(rowId ?? 0, field, value, value);
7957
7979
  };
7958
7980
  const handleKeyDown = (e) => {
@@ -8047,7 +8069,7 @@ var TableDesktopEditableComponent = ({
8047
8069
  variant,
8048
8070
  size,
8049
8071
  field,
8050
- initialValue: editInitialValue,
8072
+ initialValue: editInitialValue ?? "",
8051
8073
  inputLabel: inputLabel ?? "",
8052
8074
  validateInput,
8053
8075
  onUpdateEditableCell
@@ -8061,7 +8083,7 @@ var TableDesktopEditableComponent = ({
8061
8083
  variant,
8062
8084
  size,
8063
8085
  field,
8064
- initialValue: editInitialValue,
8086
+ initialValue: editInitialValue ?? "",
8065
8087
  inputLabel: inputLabel ?? "",
8066
8088
  onUpdateEditableCell
8067
8089
  }
@@ -8071,7 +8093,7 @@ var TableDesktopEditableComponent = ({
8071
8093
  };
8072
8094
 
8073
8095
  // src/components/TableDesktopCell/TableDesktopCell.tsx
8074
- import { useEffect as useEffect13, useRef as useRef5, useState as useState21 } from "react";
8096
+ import { useEffect as useEffect13, useRef as useRef7, useState as useState21 } from "react";
8075
8097
  import CheckIcon2 from "@mui/icons-material/Check";
8076
8098
  import CloseIcon from "@mui/icons-material/Close";
8077
8099
  import EditIcon from "@mui/icons-material/Edit";
@@ -8110,7 +8132,7 @@ var TableDesktopCell = ({
8110
8132
  onUpdateEditableCell,
8111
8133
  onCellClick
8112
8134
  }) => {
8113
- const cellRef = useRef5(null);
8135
+ const cellRef = useRef7(null);
8114
8136
  const [isOverflowed, setIsOverflowed] = useState21(false);
8115
8137
  const [isCellHovered, setIsCellHovered] = useState21(false);
8116
8138
  const [isCellInEditMode, setIsCellInEditMode] = useState21(false);