@natoora-libs/core 0.2.82 → 0.2.92-dev-doug-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.
@@ -32,7 +32,7 @@ type ExportCsvDialogProps = {
32
32
  };
33
33
  type BulkChangesDialogProps = {
34
34
  bulkChanges: BulkChanges;
35
- selectedRows: (string | number)[];
35
+ selectedRows: RowId[];
36
36
  shouldUpdateAll: boolean;
37
37
  visibleEditableColumns: HeadCell[];
38
38
  isBulkChangesDialogOpen: boolean;
@@ -43,7 +43,7 @@ type TableDesktopToolbarProps = {
43
43
  toolbarLabel?: string;
44
44
  headCells: HeadCell[];
45
45
  headerFilters: HeaderFilters;
46
- selectedRows: (string | number)[];
46
+ selectedRows: RowId[];
47
47
  isDataEmpty: boolean;
48
48
  totalDataCount?: number;
49
49
  isRowsFromAllPagesSelected: boolean;
@@ -73,11 +73,12 @@ type HeaderFilters = {
73
73
  [key: string]: HeaderFilterOptions;
74
74
  };
75
75
  type UpdateEditableCellParams = {
76
- rowId?: number;
76
+ rowId?: RowId;
77
77
  columnId: string;
78
78
  value: string | number | boolean | (string | number)[] | null;
79
79
  label: string | number | boolean | (string | number)[] | null;
80
80
  };
81
+ type RowId = string | number;
81
82
  type HeadCell = {
82
83
  id: string;
83
84
  label?: string;
@@ -122,7 +123,7 @@ type TableDesktopProps = {
122
123
  showClearFilterButton?: boolean;
123
124
  handleClickOnClearFiltersButton?: () => void;
124
125
  deleteItem?: (id: number, contentTypeName?: string, appTypeName?: string) => void;
125
- keyField?: string;
126
+ keyField?: string | ((rowData: any) => string);
126
127
  tableLayout?: 'fixed' | 'auto';
127
128
  onApplyFilters?: (updatedFilters: HeaderFilters, shouldSave: boolean) => void;
128
129
  refetchData?: () => Promise<unknown>;
@@ -130,4 +131,4 @@ type TableDesktopProps = {
130
131
  };
131
132
  declare const TableDesktop: ({ data, headCells, RenderItem, renderToolbar, renderFooter, appliedFilters, headerFilters, children, height, rowHeight, rowsPerPage, totalDataCount, isLoading, enableEditMode, disableInternalSort, updateSort, showClearFilterButton, handleClickOnClearFiltersButton, deleteItem, keyField, tableLayout, onApplyFilters, shouldShowCheckOnFilter, refetchData, }: TableDesktopProps) => react_jsx_runtime.JSX.Element;
132
133
 
133
- export { type BulkChanges as B, type EditableCellType as E, type HeadCell as H, type Order as O, type TableDesktopProps as T, type UpdateEditableCellParams as U, type HeaderFilters as a, type HeaderFilterOptions as b, type HeaderFilterObject as c, TableDesktop as d, TableDesktopFooter as e, type TableDesktopFooterProps as f, TableDesktopToolbar as g, type TableDesktopToolbarProps as h, type TableColumnConfigurationMenuProps as i, type BulkChangesDialogProps as j, type ExportCsvDialogProps as k };
134
+ export { type BulkChanges as B, type EditableCellType as E, type HeadCell as H, type Order as O, type RowId as R, type TableDesktopProps as T, type UpdateEditableCellParams as U, type HeaderFilters as a, type HeaderFilterOptions as b, type HeaderFilterObject as c, TableDesktop as d, TableDesktopFooter as e, type TableDesktopFooterProps as f, TableDesktopToolbar as g, type TableDesktopToolbarProps as h, type TableColumnConfigurationMenuProps as i, type BulkChangesDialogProps as j, type ExportCsvDialogProps as k };
@@ -32,7 +32,7 @@ type ExportCsvDialogProps = {
32
32
  };
33
33
  type BulkChangesDialogProps = {
34
34
  bulkChanges: BulkChanges;
35
- selectedRows: (string | number)[];
35
+ selectedRows: RowId[];
36
36
  shouldUpdateAll: boolean;
37
37
  visibleEditableColumns: HeadCell[];
38
38
  isBulkChangesDialogOpen: boolean;
@@ -43,7 +43,7 @@ type TableDesktopToolbarProps = {
43
43
  toolbarLabel?: string;
44
44
  headCells: HeadCell[];
45
45
  headerFilters: HeaderFilters;
46
- selectedRows: (string | number)[];
46
+ selectedRows: RowId[];
47
47
  isDataEmpty: boolean;
48
48
  totalDataCount?: number;
49
49
  isRowsFromAllPagesSelected: boolean;
@@ -73,11 +73,12 @@ type HeaderFilters = {
73
73
  [key: string]: HeaderFilterOptions;
74
74
  };
75
75
  type UpdateEditableCellParams = {
76
- rowId?: number;
76
+ rowId?: RowId;
77
77
  columnId: string;
78
78
  value: string | number | boolean | (string | number)[] | null;
79
79
  label: string | number | boolean | (string | number)[] | null;
80
80
  };
81
+ type RowId = string | number;
81
82
  type HeadCell = {
82
83
  id: string;
83
84
  label?: string;
@@ -122,7 +123,7 @@ type TableDesktopProps = {
122
123
  showClearFilterButton?: boolean;
123
124
  handleClickOnClearFiltersButton?: () => void;
124
125
  deleteItem?: (id: number, contentTypeName?: string, appTypeName?: string) => void;
125
- keyField?: string;
126
+ keyField?: string | ((rowData: any) => string);
126
127
  tableLayout?: 'fixed' | 'auto';
127
128
  onApplyFilters?: (updatedFilters: HeaderFilters, shouldSave: boolean) => void;
128
129
  refetchData?: () => Promise<unknown>;
@@ -130,4 +131,4 @@ type TableDesktopProps = {
130
131
  };
131
132
  declare const TableDesktop: ({ data, headCells, RenderItem, renderToolbar, renderFooter, appliedFilters, headerFilters, children, height, rowHeight, rowsPerPage, totalDataCount, isLoading, enableEditMode, disableInternalSort, updateSort, showClearFilterButton, handleClickOnClearFiltersButton, deleteItem, keyField, tableLayout, onApplyFilters, shouldShowCheckOnFilter, refetchData, }: TableDesktopProps) => react_jsx_runtime.JSX.Element;
132
133
 
133
- export { type BulkChanges as B, type EditableCellType as E, type HeadCell as H, type Order as O, type TableDesktopProps as T, type UpdateEditableCellParams as U, type HeaderFilters as a, type HeaderFilterOptions as b, type HeaderFilterObject as c, TableDesktop as d, TableDesktopFooter as e, type TableDesktopFooterProps as f, TableDesktopToolbar as g, type TableDesktopToolbarProps as h, type TableColumnConfigurationMenuProps as i, type BulkChangesDialogProps as j, type ExportCsvDialogProps as k };
134
+ export { type BulkChanges as B, type EditableCellType as E, type HeadCell as H, type Order as O, type RowId as R, type TableDesktopProps as T, type UpdateEditableCellParams as U, type HeaderFilters as a, type HeaderFilterOptions as b, type HeaderFilterObject as c, TableDesktop as d, TableDesktopFooter as e, type TableDesktopFooterProps as f, TableDesktopToolbar as g, type TableDesktopToolbarProps as h, type TableColumnConfigurationMenuProps as i, type BulkChangesDialogProps as j, type ExportCsvDialogProps as k };
@@ -3730,7 +3730,7 @@ var CheckboxFilterMenuContent = ({
3730
3730
  )
3731
3731
  }
3732
3732
  ),
3733
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(import_material23.Divider, {}),
3733
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(import_material23.Divider, { sx: { mt: 0.5 } }),
3734
3734
  /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(
3735
3735
  import_material23.Box,
3736
3736
  {
@@ -5955,15 +5955,15 @@ var useStyles35 = (0, import_mui37.makeStyles)()((theme) => ({
5955
5955
  * https://www.w3schools.com/howto/howto_css_hide_arrow_number.asp
5956
5956
  */
5957
5957
  "& input::-webkit-inner-spin-button": {
5958
- WebkitAppearance: "none",
5958
+ "-webkit-appearance": "none",
5959
5959
  margin: 0
5960
5960
  },
5961
5961
  "& input::-webkit-outer-spin-button": {
5962
- WebkitAppearance: "none",
5962
+ "-webkit-appearance": "none",
5963
5963
  margin: 0
5964
5964
  },
5965
5965
  "& input[type=number]": {
5966
- MozAppearance: "textfield"
5966
+ "-moz-appearance": "textfield"
5967
5967
  }
5968
5968
  },
5969
5969
  formControlLabel: {
@@ -7311,6 +7311,7 @@ var SmartMultipleSelect = ({
7311
7311
  inputLabel,
7312
7312
  variant = "standard",
7313
7313
  size,
7314
+ error,
7314
7315
  values,
7315
7316
  defaultValues,
7316
7317
  onChange,
@@ -7365,37 +7366,47 @@ var SmartMultipleSelect = ({
7365
7366
  option.value ?? index
7366
7367
  );
7367
7368
  }) });
7368
- return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(import_material62.FormControl, { fullWidth: true, variant, children: [
7369
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_material62.InputLabel, { children: inputLabel }),
7370
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
7371
- import_material62.Select,
7372
- {
7373
- multiple: true,
7374
- size,
7375
- disabled,
7376
- value: values ?? localValues,
7377
- defaultValue: defaultValues,
7378
- onOpen,
7379
- onClose: () => onClose?.(localValues),
7380
- renderValue: (selectedValues) => {
7381
- const valuesString = selectedValues.map((v) => v.label)?.join(", ");
7382
- return /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(DynamicOverflowTooltip, { tooltipDescription: valuesString, children: valuesString });
7383
- },
7384
- children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
7385
- import_material62.Box,
7369
+ return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
7370
+ import_material62.FormControl,
7371
+ {
7372
+ fullWidth: true,
7373
+ variant,
7374
+ size,
7375
+ disabled,
7376
+ error,
7377
+ children: [
7378
+ /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_material62.InputLabel, { children: inputLabel }),
7379
+ /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
7380
+ import_material62.Select,
7386
7381
  {
7387
- sx: {
7388
- display: "flex",
7389
- justifyContent: "center",
7390
- alignItems: "center"
7382
+ multiple: true,
7383
+ label: inputLabel,
7384
+ error,
7385
+ value: values ?? localValues,
7386
+ defaultValue: defaultValues,
7387
+ onOpen,
7388
+ onClose: () => onClose?.(localValues),
7389
+ renderValue: (selectedValues) => {
7390
+ const valuesString = selectedValues.map((v) => v.label)?.join(", ");
7391
+ return /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(DynamicOverflowTooltip, { tooltipDescription: valuesString, children: valuesString });
7391
7392
  },
7392
- children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_material62.CircularProgress, { size: 24 })
7393
+ children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
7394
+ import_material62.Box,
7395
+ {
7396
+ sx: {
7397
+ display: "flex",
7398
+ justifyContent: "center",
7399
+ alignItems: "center"
7400
+ },
7401
+ children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_material62.CircularProgress, { size: 24 })
7402
+ }
7403
+ ) : renderMenuContent()
7393
7404
  }
7394
- ) : renderMenuContent()
7395
- }
7396
- ),
7397
- helperText && /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_material62.FormHelperText, { children: helperText })
7398
- ] });
7405
+ ),
7406
+ helperText && /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_material62.FormHelperText, { children: helperText })
7407
+ ]
7408
+ }
7409
+ );
7399
7410
  };
7400
7411
 
7401
7412
  // src/components/SmartSelect/SmartSelect.tsx
@@ -8204,7 +8215,7 @@ var TableDesktopRows = ({
8204
8215
  data,
8205
8216
  RenderItem,
8206
8217
  visibleHeadCells,
8207
- keyField,
8218
+ getRowId,
8208
8219
  order,
8209
8220
  orderBy,
8210
8221
  disableInternalSort,
@@ -8217,7 +8228,8 @@ var TableDesktopRows = ({
8217
8228
  }) => {
8218
8229
  const sortedData = disableInternalSort ? data : stableSort2(data, getComparator(order, orderBy));
8219
8230
  return sortedData.map((row, index) => {
8220
- const isItemSelected = selectedRows.has(row[keyField]);
8231
+ const rowId = getRowId(row);
8232
+ const isItemSelected = selectedRows.has(rowId);
8221
8233
  return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
8222
8234
  RenderItem,
8223
8235
  {
@@ -8229,12 +8241,12 @@ var TableDesktopRows = ({
8229
8241
  enableEditMode,
8230
8242
  enableCheckboxSelection,
8231
8243
  rowHeight,
8232
- rowId: row[keyField],
8244
+ rowId,
8233
8245
  onRowCheckboxChange,
8234
8246
  visibleHeadCells
8235
8247
  }
8236
8248
  },
8237
- row[keyField] ?? index
8249
+ rowId ?? index
8238
8250
  );
8239
8251
  });
8240
8252
  };
@@ -8335,6 +8347,12 @@ var TableEmptyResult_default = TableEmptyResult;
8335
8347
 
8336
8348
  // src/components/TableDesktop/TableDesktop.tsx
8337
8349
  var import_jsx_runtime129 = require("react/jsx-runtime");
8350
+ var resolveKeyValue = (keyField, rowData) => {
8351
+ if (typeof keyField === "string") {
8352
+ return rowData[keyField];
8353
+ }
8354
+ return keyField?.(rowData);
8355
+ };
8338
8356
  var TableDesktop = ({
8339
8357
  data = [],
8340
8358
  headCells,
@@ -8367,14 +8385,14 @@ var TableDesktop = ({
8367
8385
  const [orderBy, setOrderBy] = (0, import_react41.useState)(
8368
8386
  appliedFilters?.sortField || "delivery_date"
8369
8387
  );
8370
- const [selectedRows, setSelectedRows] = (0, import_react41.useState)(
8371
- /* @__PURE__ */ new Set()
8372
- );
8388
+ const [selectedRows, setSelectedRows] = (0, import_react41.useState)(/* @__PURE__ */ new Set());
8373
8389
  const [isRowsFromAllPagesSelected, setIsRowsFromAllPagesSelected] = (0, import_react41.useState)(false);
8374
8390
  const [isBulkChangesMode, setIsBulkChangesMode] = (0, import_react41.useState)(false);
8375
8391
  const numRows = data.length;
8376
8392
  const numSelectedRows = (0, import_react41.useMemo)(() => {
8377
- const currentPageIds = new Set(data.map((row) => row[keyField]));
8393
+ const currentPageIds = new Set(
8394
+ data.map((row) => resolveKeyValue(keyField, row))
8395
+ );
8378
8396
  return [...selectedRows].filter((id) => currentPageIds.has(id)).length;
8379
8397
  }, [data, selectedRows, keyField]);
8380
8398
  const isEveryRowInPageSelected = numRows > 0 && numSelectedRows === numRows;
@@ -8395,7 +8413,9 @@ var TableDesktop = ({
8395
8413
  }
8396
8414
  };
8397
8415
  const selectAllRowsInPage = () => {
8398
- const allRowsIds = new Set(data.map((obj) => obj[keyField]));
8416
+ const allRowsIds = new Set(
8417
+ data.map((row) => resolveKeyValue(keyField, row))
8418
+ );
8399
8419
  setSelectedRows(allRowsIds);
8400
8420
  };
8401
8421
  const resetSelectedRows = () => {
@@ -8474,7 +8494,7 @@ var TableDesktop = ({
8474
8494
  data,
8475
8495
  RenderItem,
8476
8496
  visibleHeadCells,
8477
- keyField,
8497
+ getRowId: (rowData) => resolveKeyValue(keyField, rowData),
8478
8498
  order,
8479
8499
  orderBy,
8480
8500
  disableInternalSort,
@@ -8617,7 +8637,7 @@ var TableDesktopSmartMultipleSelect = ({
8617
8637
  onUpdateEditableCell
8618
8638
  }) => {
8619
8639
  const defaultValues = (0, import_react42.useMemo)(() => {
8620
- return initialValue.map((val) => ({
8640
+ return initialValue?.map((val) => ({
8621
8641
  value: val.id,
8622
8642
  label: val[fieldName].toString()
8623
8643
  }));
@@ -8639,11 +8659,12 @@ var TableDesktopSmartMultipleSelect = ({
8639
8659
  },
8640
8660
  onClose: (values) => {
8641
8661
  const optionsValues = values.map((option) => option.value ?? "");
8662
+ const optionsLabels = values.map((option) => option.label ?? "");
8642
8663
  onUpdateEditableCell?.({
8643
8664
  rowId,
8644
8665
  columnId,
8645
8666
  value: optionsValues,
8646
- label: optionsValues
8667
+ label: optionsLabels
8647
8668
  });
8648
8669
  }
8649
8670
  }
@@ -8901,10 +8922,9 @@ var TableDesktopEditableField = ({
8901
8922
  date: /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
8902
8923
  import_x_date_pickers.DatePicker,
8903
8924
  {
8904
- defaultValue: (0, import_moment3.default)(editInitialValue),
8925
+ defaultValue: editInitialValue ? (0, import_moment3.default)(editInitialValue, "HH:mm:ss") : void 0,
8905
8926
  label: inputLabel,
8906
8927
  format: "DD/MM/YYYY",
8907
- sx: { overflowY: "hidden" },
8908
8928
  onAccept: (value) => {
8909
8929
  const formattedValue = value?.format("YYYY-MM-DD") ?? null;
8910
8930
  const formattedLabel = value?.format("DD/MM/YYYY") ?? null;
@@ -8921,7 +8941,8 @@ var TableDesktopEditableField = ({
8921
8941
  clearButton: { sx: { p: 0.5 } },
8922
8942
  openPickerButton: { sx: { p: 0 } },
8923
8943
  textField: {
8924
- variant: "standard",
8944
+ variant,
8945
+ size,
8925
8946
  error: false
8926
8947
  }
8927
8948
  }
@@ -8930,9 +8951,8 @@ var TableDesktopEditableField = ({
8930
8951
  time: /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
8931
8952
  import_x_date_pickers.TimePicker,
8932
8953
  {
8933
- defaultValue: (0, import_moment3.default)(editInitialValue, "HH:mm:ss"),
8954
+ defaultValue: editInitialValue ? (0, import_moment3.default)(editInitialValue, "HH:mm:ss") : void 0,
8934
8955
  label: inputLabel,
8935
- sx: { overflowY: "hidden" },
8936
8956
  onAccept: (value) => {
8937
8957
  const formattedValue = value?.format("HH:mm") ?? null;
8938
8958
  onUpdateEditableCell?.({
@@ -8948,7 +8968,8 @@ var TableDesktopEditableField = ({
8948
8968
  clearButton: { sx: { p: 0.5 } },
8949
8969
  openPickerButton: { sx: { p: 0 } },
8950
8970
  textField: {
8951
- variant: "standard",
8971
+ variant,
8972
+ size,
8952
8973
  error: false
8953
8974
  }
8954
8975
  }
@@ -8994,6 +9015,7 @@ var TableDesktopFooter = ({
8994
9015
  variant: "text",
8995
9016
  onClick: () => refetchData(),
8996
9017
  disabled: isFetching,
9018
+ "aria-label": "refresh-button",
8997
9019
  sx: {
8998
9020
  ml: 1,
8999
9021
  gap: 1
@@ -9340,7 +9362,7 @@ var TableDesktopToolbar = ({
9340
9362
  )
9341
9363
  ] }) : /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(import_material79.Box, { sx: { display: "flex", alignItems: "center", gap: 1 }, children: [
9342
9364
  renderInfoIcons,
9343
- renderExportCsvDialog ? /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material79.Tooltip, { title: "Download Customer List", children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("span", { style: { display: "flex", alignItems: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
9365
+ renderExportCsvDialog ? /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material79.Tooltip, { title: "Download List", children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("span", { style: { display: "flex", alignItems: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
9344
9366
  import_material79.IconButton,
9345
9367
  {
9346
9368
  disableRipple: true,