@natoora-libs/core 0.2.11 → 0.2.12

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
  {
@@ -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,
@@ -7366,38 +7367,48 @@ var SmartMultipleSelect = ({
7366
7367
  option.value ?? index
7367
7368
  );
7368
7369
  }) });
7369
- return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(import_material62.FormControl, { fullWidth: true, size, variant, disabled, children: [
7370
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_material62.InputLabel, { children: inputLabel }),
7371
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
7372
- import_material62.Select,
7373
- {
7374
- multiple: true,
7375
- size,
7376
- disabled,
7377
- value: values ?? localValues,
7378
- defaultValue: defaultValues,
7379
- MenuProps: menuProps,
7380
- onOpen,
7381
- onClose: () => onClose?.(localValues),
7382
- renderValue: (selectedValues) => {
7383
- const valuesString = selectedValues.map((v) => v.label)?.join(", ");
7384
- return /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(DynamicOverflowTooltip, { tooltipDescription: valuesString, children: valuesString });
7385
- },
7386
- children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
7387
- import_material62.Box,
7370
+ return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
7371
+ import_material62.FormControl,
7372
+ {
7373
+ fullWidth: true,
7374
+ variant,
7375
+ size,
7376
+ disabled,
7377
+ error,
7378
+ children: [
7379
+ /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_material62.InputLabel, { children: inputLabel }),
7380
+ /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
7381
+ import_material62.Select,
7388
7382
  {
7389
- sx: {
7390
- display: "flex",
7391
- justifyContent: "center",
7392
- alignItems: "center"
7383
+ multiple: true,
7384
+ label: inputLabel,
7385
+ error,
7386
+ value: values ?? localValues,
7387
+ defaultValue: defaultValues,
7388
+ MenuProps: menuProps,
7389
+ onOpen,
7390
+ onClose: () => onClose?.(localValues),
7391
+ renderValue: (selectedValues) => {
7392
+ const valuesString = selectedValues.map((v) => v.label)?.join(", ");
7393
+ return /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(DynamicOverflowTooltip, { tooltipDescription: valuesString, children: valuesString });
7393
7394
  },
7394
- children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_material62.CircularProgress, { size: 24 })
7395
+ children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
7396
+ import_material62.Box,
7397
+ {
7398
+ sx: {
7399
+ display: "flex",
7400
+ justifyContent: "center",
7401
+ alignItems: "center"
7402
+ },
7403
+ children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_material62.CircularProgress, { size: 24 })
7404
+ }
7405
+ ) : renderMenuContent()
7395
7406
  }
7396
- ) : renderMenuContent()
7397
- }
7398
- ),
7399
- helperText && /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_material62.FormHelperText, { children: helperText })
7400
- ] });
7407
+ ),
7408
+ helperText && /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_material62.FormHelperText, { children: helperText })
7409
+ ]
7410
+ }
7411
+ );
7401
7412
  };
7402
7413
 
7403
7414
  // src/components/SmartSelect/SmartSelect.tsx
@@ -8190,7 +8201,7 @@ var TableDesktopRows = ({
8190
8201
  data,
8191
8202
  RenderItem,
8192
8203
  visibleHeadCells,
8193
- keyField,
8204
+ getRowId,
8194
8205
  order,
8195
8206
  orderBy,
8196
8207
  disableInternalSort,
@@ -8203,7 +8214,8 @@ var TableDesktopRows = ({
8203
8214
  }) => {
8204
8215
  const sortedData = disableInternalSort ? data : stableSort2(data, getComparator(order, orderBy));
8205
8216
  return sortedData.map((row, index) => {
8206
- const isItemSelected = selectedRows.has(row[keyField]);
8217
+ const rowId = getRowId(row);
8218
+ const isItemSelected = selectedRows.has(rowId);
8207
8219
  return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
8208
8220
  RenderItem,
8209
8221
  {
@@ -8215,12 +8227,12 @@ var TableDesktopRows = ({
8215
8227
  enableEditMode,
8216
8228
  enableCheckboxSelection,
8217
8229
  rowHeight,
8218
- rowId: row[keyField],
8230
+ rowId,
8219
8231
  onRowCheckboxChange,
8220
8232
  visibleHeadCells
8221
8233
  }
8222
8234
  },
8223
- row[keyField] ?? index
8235
+ rowId ?? index
8224
8236
  );
8225
8237
  });
8226
8238
  };
@@ -8321,6 +8333,12 @@ var TableEmptyResult_default = TableEmptyResult;
8321
8333
 
8322
8334
  // src/components/TableDesktop/TableDesktop.tsx
8323
8335
  var import_jsx_runtime129 = require("react/jsx-runtime");
8336
+ var resolveKeyValue = (keyField, rowData) => {
8337
+ if (typeof keyField === "string") {
8338
+ return rowData[keyField];
8339
+ }
8340
+ return keyField?.(rowData);
8341
+ };
8324
8342
  var TableDesktop = ({
8325
8343
  data = [],
8326
8344
  headCells,
@@ -8353,14 +8371,14 @@ var TableDesktop = ({
8353
8371
  const [orderBy, setOrderBy] = (0, import_react41.useState)(
8354
8372
  appliedFilters?.sortField || "delivery_date"
8355
8373
  );
8356
- const [selectedRows, setSelectedRows] = (0, import_react41.useState)(
8357
- /* @__PURE__ */ new Set()
8358
- );
8374
+ const [selectedRows, setSelectedRows] = (0, import_react41.useState)(/* @__PURE__ */ new Set());
8359
8375
  const [isRowsFromAllPagesSelected, setIsRowsFromAllPagesSelected] = (0, import_react41.useState)(false);
8360
8376
  const [isBulkChangesMode, setIsBulkChangesMode] = (0, import_react41.useState)(false);
8361
8377
  const numRows = data.length;
8362
8378
  const numSelectedRows = (0, import_react41.useMemo)(() => {
8363
- const currentPageIds = new Set(data.map((row) => row[keyField]));
8379
+ const currentPageIds = new Set(
8380
+ data.map((row) => resolveKeyValue(keyField, row))
8381
+ );
8364
8382
  return [...selectedRows].filter((id) => currentPageIds.has(id)).length;
8365
8383
  }, [data, selectedRows, keyField]);
8366
8384
  const isEveryRowInPageSelected = numRows > 0 && numSelectedRows === numRows;
@@ -8381,7 +8399,9 @@ var TableDesktop = ({
8381
8399
  }
8382
8400
  };
8383
8401
  const selectAllRowsInPage = () => {
8384
- const allRowsIds = new Set(data.map((obj) => obj[keyField]));
8402
+ const allRowsIds = new Set(
8403
+ data.map((row) => resolveKeyValue(keyField, row))
8404
+ );
8385
8405
  setSelectedRows(allRowsIds);
8386
8406
  };
8387
8407
  const resetSelectedRows = () => {
@@ -8460,7 +8480,7 @@ var TableDesktop = ({
8460
8480
  data,
8461
8481
  RenderItem,
8462
8482
  visibleHeadCells,
8463
- keyField,
8483
+ getRowId: (rowData) => resolveKeyValue(keyField, rowData),
8464
8484
  order,
8465
8485
  orderBy,
8466
8486
  disableInternalSort,
@@ -8603,7 +8623,7 @@ var TableDesktopSmartMultipleSelect = ({
8603
8623
  onUpdateEditableCell
8604
8624
  }) => {
8605
8625
  const defaultValues = (0, import_react42.useMemo)(() => {
8606
- return initialValue.map((val) => ({
8626
+ return initialValue?.map((val) => ({
8607
8627
  value: val.id,
8608
8628
  label: val[fieldName].toString()
8609
8629
  }));
@@ -8626,11 +8646,12 @@ var TableDesktopSmartMultipleSelect = ({
8626
8646
  },
8627
8647
  onClose: (values) => {
8628
8648
  const optionsValues = values.map((option) => option.value ?? "");
8649
+ const optionsLabels = values.map((option) => option.label ?? "");
8629
8650
  onUpdateEditableCell?.({
8630
8651
  rowId,
8631
8652
  columnId,
8632
8653
  value: optionsValues,
8633
- label: optionsValues
8654
+ label: optionsLabels
8634
8655
  });
8635
8656
  }
8636
8657
  }
@@ -8889,10 +8910,9 @@ var TableDesktopEditableField = ({
8889
8910
  date: /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
8890
8911
  import_x_date_pickers.DatePicker,
8891
8912
  {
8892
- defaultValue: (0, import_moment3.default)(editInitialValue),
8913
+ defaultValue: editInitialValue ? (0, import_moment3.default)(editInitialValue, "HH:mm:ss") : void 0,
8893
8914
  label: inputLabel,
8894
8915
  format: "DD/MM/YYYY",
8895
- sx: { overflowY: "hidden" },
8896
8916
  onAccept: (value) => {
8897
8917
  const formattedValue = value?.format("YYYY-MM-DD") ?? null;
8898
8918
  const formattedLabel = value?.format("DD/MM/YYYY") ?? null;
@@ -8909,7 +8929,8 @@ var TableDesktopEditableField = ({
8909
8929
  clearButton: { sx: { p: 0.5 } },
8910
8930
  openPickerButton: { sx: { p: 0 } },
8911
8931
  textField: {
8912
- variant: "standard",
8932
+ variant,
8933
+ size,
8913
8934
  error: false
8914
8935
  }
8915
8936
  }
@@ -8918,9 +8939,8 @@ var TableDesktopEditableField = ({
8918
8939
  time: /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
8919
8940
  import_x_date_pickers.TimePicker,
8920
8941
  {
8921
- defaultValue: (0, import_moment3.default)(editInitialValue, "HH:mm:ss"),
8942
+ defaultValue: editInitialValue ? (0, import_moment3.default)(editInitialValue, "HH:mm:ss") : void 0,
8922
8943
  label: inputLabel,
8923
- sx: { overflowY: "hidden" },
8924
8944
  onAccept: (value) => {
8925
8945
  const formattedValue = value?.format("HH:mm") ?? null;
8926
8946
  onUpdateEditableCell?.({
@@ -8936,7 +8956,8 @@ var TableDesktopEditableField = ({
8936
8956
  clearButton: { sx: { p: 0.5 } },
8937
8957
  openPickerButton: { sx: { p: 0 } },
8938
8958
  textField: {
8939
- variant: "standard",
8959
+ variant,
8960
+ size,
8940
8961
  error: false
8941
8962
  }
8942
8963
  }
@@ -9329,7 +9350,7 @@ var TableDesktopToolbar = ({
9329
9350
  )
9330
9351
  ] }) : /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(import_material79.Box, { sx: { display: "flex", alignItems: "center", gap: 1 }, children: [
9331
9352
  renderInfoIcons,
9332
- 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)(
9353
+ 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)(
9333
9354
  import_material79.IconButton,
9334
9355
  {
9335
9356
  disableRipple: true,