blixify-ui-web 1.2.58 → 1.2.60

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.
Files changed (52) hide show
  1. package/lib/components/data/dataTemplate/dataStateModel.d.ts +1 -0
  2. package/lib/components/data/dataTemplate/dataStateModel.d.ts.map +1 -1
  3. package/lib/components/data/dataTemplate/dataStateModel.js.map +1 -1
  4. package/lib/components/data/dataTemplate/index.d.ts.map +1 -1
  5. package/lib/components/data/dataTemplate/index.js +368 -226
  6. package/lib/components/data/dataTemplate/index.js.map +1 -1
  7. package/lib/components/data/dataTemplate/viewStatePersistence.d.ts +1 -0
  8. package/lib/components/data/dataTemplate/viewStatePersistence.d.ts.map +1 -1
  9. package/lib/components/data/dataTemplate/viewStatePersistence.js.map +1 -1
  10. package/lib/components/data/dataWrapper/dataWrapper.fixtures.d.ts +9 -0
  11. package/lib/components/data/dataWrapper/dataWrapper.fixtures.d.ts.map +1 -0
  12. package/lib/components/data/dataWrapper/dataWrapper.fixtures.js +33 -0
  13. package/lib/components/data/dataWrapper/dataWrapper.fixtures.js.map +1 -0
  14. package/lib/components/data/dataWrapper/index.d.ts +36 -1
  15. package/lib/components/data/dataWrapper/index.d.ts.map +1 -1
  16. package/lib/components/data/dataWrapper/index.js +206 -61
  17. package/lib/components/data/dataWrapper/index.js.map +1 -1
  18. package/lib/components/data/flexFilter/index.d.ts.map +1 -1
  19. package/lib/components/data/flexFilter/index.js +1 -2
  20. package/lib/components/data/flexFilter/index.js.map +1 -1
  21. package/lib/components/data/listModule.d.ts +3 -1
  22. package/lib/components/data/listModule.d.ts.map +1 -1
  23. package/lib/components/data/listModule.js +6 -4
  24. package/lib/components/data/listModule.js.map +1 -1
  25. package/lib/components/data/updateModule.d.ts.map +1 -1
  26. package/lib/components/data/updateModule.js +18 -11
  27. package/lib/components/data/updateModule.js.map +1 -1
  28. package/lib/components/data/utils.d.ts +9 -1
  29. package/lib/components/data/utils.d.ts.map +1 -1
  30. package/lib/components/data/utils.js +74 -1
  31. package/lib/components/data/utils.js.map +1 -1
  32. package/lib/components/display/drawer/index.d.ts +22 -6
  33. package/lib/components/display/drawer/index.d.ts.map +1 -1
  34. package/lib/components/display/drawer/index.js +138 -17
  35. package/lib/components/display/drawer/index.js.map +1 -1
  36. package/lib/components/display/flexTable/newMobileItemCard.d.ts.map +1 -1
  37. package/lib/components/display/flexTable/newMobileItemCard.js +1 -2
  38. package/lib/components/display/flexTable/newMobileItemCard.js.map +1 -1
  39. package/lib/components/display/newTable/index.d.ts +4 -0
  40. package/lib/components/display/newTable/index.d.ts.map +1 -1
  41. package/lib/components/display/newTable/index.js +207 -29
  42. package/lib/components/display/newTable/index.js.map +1 -1
  43. package/lib/components/display/table/index.d.ts +22 -4
  44. package/lib/components/display/table/index.d.ts.map +1 -1
  45. package/lib/components/display/table/index.js +221 -40
  46. package/lib/components/display/table/index.js.map +1 -1
  47. package/lib/components/input/textArea/index.d.ts +5 -0
  48. package/lib/components/input/textArea/index.d.ts.map +1 -1
  49. package/lib/components/input/textArea/index.js +10 -3
  50. package/lib/components/input/textArea/index.js.map +1 -1
  51. package/lib/tail.css +2 -2
  52. package/package.json +1 -1
@@ -100,6 +100,7 @@ var tag_1 = require("../tag");
100
100
  var textButton_1 = require("../../action/textButton");
101
101
  var iconButton_1 = require("../../action/iconButton");
102
102
  var link_1 = require("../../structure/link");
103
+ var button_1 = require("../../action/button");
103
104
  var modal_1 = require("../modal");
104
105
  // INFO: resolve dotted key paths (e.g. "group.subKey") against a row object.
105
106
  // Required because flatColumns uses "parent.child" keys for groupData sub-columns.
@@ -140,8 +141,24 @@ var resolveValueToString = function (key, source, row) {
140
141
  }
141
142
  return "";
142
143
  };
144
+ var handleCheckModalEditEmpty = function (value) {
145
+ if (value === undefined || value === null)
146
+ return true;
147
+ if (typeof value === "string") {
148
+ var trimmed = value.trim();
149
+ return trimmed === "" || trimmed === "-";
150
+ }
151
+ if (Array.isArray(value))
152
+ return value.length === 0;
153
+ if (typeof value === "object") {
154
+ if (Array.isArray(value.data))
155
+ return value.data.length === 0;
156
+ return Object.values(value).every(function (each) { return each === undefined || each === null || each === ""; });
157
+ }
158
+ return false;
159
+ };
143
160
  var NewTable = function (props) {
144
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
161
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
145
162
  var columns = (_b = (_a = props.columns) !== null && _a !== void 0 ? _a : props.header) !== null && _b !== void 0 ? _b : [];
146
163
  var defaultLimit = 10;
147
164
  var defaultPageSize = 5;
@@ -190,26 +207,30 @@ var NewTable = function (props) {
190
207
  flatColumns.length = 0;
191
208
  flatColumns.push.apply(flatColumns, __spreadArray(__spreadArray(__spreadArray([], leftCols, false), middleCols, false), rightCols, false));
192
209
  }
193
- var _s = (0, react_2.useState)(props.fixedPagination ? true : false), isFixed = _s[0], setIsFixed = _s[1];
210
+ var _v = (0, react_2.useState)(props.fixedPagination ? true : false), isFixed = _v[0], setIsFixed = _v[1];
194
211
  //=====================================================================================
195
212
  // SECTION: Advanced Settings
196
213
  //=====================================================================================
197
- var _t = (0, react_2.useState)(""), filterModal = _t[0], setFilterModal = _t[1];
198
- var _u = (0, react_2.useState)(""), addColumnModal = _u[0], setAddColumnModal = _u[1];
214
+ var _w = (0, react_2.useState)(""), filterModal = _w[0], setFilterModal = _w[1];
215
+ var _x = (0, react_2.useState)(""), addColumnModal = _x[0], setAddColumnModal = _x[1];
199
216
  //=====================================================================================
200
217
  // SECTION: Editable & Addable cells
201
218
  //=====================================================================================
202
- var _v = (0, react_2.useState)(""), editDataRowId = _v[0], setEditDataRowId = _v[1];
203
- var _w = (0, react_2.useState)(""), editDataHeaderKey = _w[0], setEditDataHeaderKey = _w[1];
204
- var _x = (0, react_2.useState)({}), editDataValue = _x[0], setEditDataValue = _x[1];
205
- var _y = (0, react_2.useState)(false), editDataIsLoading = _y[0], setEditDataIsLoading = _y[1];
206
- var _z = (0, react_2.useState)(false), addData = _z[0], setAddData = _z[1];
207
- var _0 = (0, react_2.useState)({}), addDataValue = _0[0], setAddDataValue = _0[1];
208
- var _1 = (0, react_2.useState)({}), referencesOptions = _1[0], setReferencesOptions = _1[1];
209
- var _2 = (0, react_2.useState)({}), referencesDetails = _2[0], setReferencesDetails = _2[1];
210
- var _3 = (0, react_2.useState)(false), referenceLoading = _3[0], setReferenceLoading = _3[1];
219
+ var _y = (0, react_2.useState)(""), editDataRowId = _y[0], setEditDataRowId = _y[1];
220
+ var _z = (0, react_2.useState)(""), editDataHeaderKey = _z[0], setEditDataHeaderKey = _z[1];
221
+ var _0 = (0, react_2.useState)(false), modalEditVisible = _0[0], setModalEditVisible = _0[1];
222
+ var _1 = (0, react_2.useState)({}), editDataValue = _1[0], setEditDataValue = _1[1];
223
+ var _2 = (0, react_2.useState)(false), editDataIsLoading = _2[0], setEditDataIsLoading = _2[1];
224
+ var _3 = (0, react_2.useState)(false), addData = _3[0], setAddData = _3[1];
225
+ var _4 = (0, react_2.useState)({}), addDataValue = _4[0], setAddDataValue = _4[1];
226
+ var _5 = (0, react_2.useState)({}), referencesOptions = _5[0], setReferencesOptions = _5[1];
227
+ // INFO: seeded options sit under the local map so a cell's own search
228
+ // results still win per key
229
+ var mergedReferencesOptions = __assign(__assign({}, ((_g = props.referencesOptions) !== null && _g !== void 0 ? _g : {})), referencesOptions);
230
+ var _6 = (0, react_2.useState)({}), referencesDetails = _6[0], setReferencesDetails = _6[1];
231
+ var _7 = (0, react_2.useState)(false), referenceLoading = _7[0], setReferenceLoading = _7[1];
211
232
  // INFO: measured pixel widths for pinned columns without an explicit width.
212
- var _4 = (0, react_2.useState)({}), measuredPinWidths = _4[0], setMeasuredPinWidths = _4[1];
233
+ var _8 = (0, react_2.useState)({}), measuredPinWidths = _8[0], setMeasuredPinWidths = _8[1];
213
234
  var editDataValueRef = (0, react_2.useRef)({});
214
235
  var editDataRowIdRef = (0, react_2.useRef)("");
215
236
  var editDataInputRefs = (0, react_2.useRef)([]);
@@ -397,6 +418,99 @@ var NewTable = function (props) {
397
418
  setEditDataValue(data);
398
419
  }
399
420
  };
421
+ var handleOnChangeFile = function (e) {
422
+ var cloned = handleGenerateClonedData();
423
+ cloned[e.target.id] =
424
+ e.target.files.length > 0 ? e.target.files[0] : undefined;
425
+ handleUpdateChangeData(cloned);
426
+ };
427
+ var handleOnChangeFiles = function (id, value, action) {
428
+ var _a, _b, _c, _d, _e, _f, _g, _h;
429
+ var cloned = handleGenerateClonedData();
430
+ var previousData = (_b = (_a = cloned[id]) === null || _a === void 0 ? void 0 : _a["data"]) !== null && _b !== void 0 ? _b : [];
431
+ var previousUpload = (_d = (_c = cloned[id]) === null || _c === void 0 ? void 0 : _c["upload"]) !== null && _d !== void 0 ? _d : [];
432
+ var previousRemove = (_f = (_e = cloned[id]) === null || _e === void 0 ? void 0 : _e["remove"]) !== null && _f !== void 0 ? _f : [];
433
+ if (action === "tagEdit") {
434
+ var applyTags = function (target, source) {
435
+ return target.map(function (item) {
436
+ var match = source.find(function (each) { return each.token === item.token; });
437
+ return match
438
+ ? __assign(__assign({}, item), { tags: match.tags, description: match.description, hidden: match.hidden }) : item;
439
+ });
440
+ };
441
+ cloned[id] = __assign(__assign({}, cloned[id]), { data: applyTags(previousData, (_g = value.data) !== null && _g !== void 0 ? _g : []), upload: applyTags(previousUpload, (_h = value.upload) !== null && _h !== void 0 ? _h : []) });
442
+ }
443
+ else if (action === "upload") {
444
+ cloned[id] = __assign(__assign({}, cloned[id]), { upload: __spreadArray(__spreadArray([], value, true), previousUpload, true) });
445
+ }
446
+ else if (previousData.some(function (file) { return file.token === value.token; })) {
447
+ cloned[id] = __assign(__assign({}, cloned[id]), { data: previousData.filter(function (file) { return file.token !== value.token; }), remove: __spreadArray(__spreadArray([], previousRemove, true), [value], false) });
448
+ }
449
+ else {
450
+ cloned[id] = __assign(__assign({}, cloned[id]), { upload: previousUpload.filter(function (file) { return file.token !== value.token; }) });
451
+ }
452
+ handleUpdateChangeData(cloned);
453
+ };
454
+ var handleNormalizeEditValue = function (headerKey, data) {
455
+ var _a;
456
+ var selectedHeader = flatColumns.find(function (eachHeader) { return eachHeader.key === headerKey; });
457
+ if (!selectedHeader)
458
+ return data;
459
+ if (selectedHeader.type === "multipleImage" ||
460
+ selectedHeader.type === "multipleFile") {
461
+ var value = data[headerKey];
462
+ if (Array.isArray(value) || value === undefined || value === null) {
463
+ return __assign(__assign({}, data), (_a = {}, _a[headerKey] = { data: value !== null && value !== void 0 ? value : [], upload: [], remove: [] }, _a));
464
+ }
465
+ }
466
+ return data;
467
+ };
468
+ var handleModalEditOnClick = function (rowId, headerKey, data) {
469
+ var normalised = handleNormalizeEditValue(headerKey, data);
470
+ originalDataRef.current = data;
471
+ editDataRowIdRef.current = rowId;
472
+ editDataValueRef.current = normalised;
473
+ setEditDataRowId(rowId);
474
+ setEditDataValue(normalised);
475
+ setEditDataHeaderKey(headerKey);
476
+ setModalEditVisible(true);
477
+ handleCreateFormInputRefs("edit");
478
+ };
479
+ var handleModalEditClose = function () {
480
+ setModalEditVisible(false);
481
+ editDataRowIdRef.current = "";
482
+ editDataValueRef.current = {};
483
+ setEditDataRowId("");
484
+ setEditDataValue({});
485
+ setEditDataHeaderKey("");
486
+ };
487
+ var handleModalEditSave = function () { return __awaiter(void 0, void 0, void 0, function () {
488
+ var columnId, value, isUntouchedFilesObj;
489
+ var _a, _b, _c, _d, _e, _f;
490
+ return __generator(this, function (_g) {
491
+ switch (_g.label) {
492
+ case 0:
493
+ columnId = editDataHeaderKey;
494
+ value = editDataValueRef.current[columnId];
495
+ isUntouchedFilesObj = value &&
496
+ typeof value === "object" &&
497
+ !Array.isArray(value) &&
498
+ Array.isArray(value.data) &&
499
+ ((_b = (_a = value.upload) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) === 0 &&
500
+ ((_d = (_c = value.remove) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) === 0 &&
501
+ JSON.stringify(value.data) ===
502
+ JSON.stringify((_f = (_e = originalDataRef.current) === null || _e === void 0 ? void 0 : _e[columnId]) !== null && _f !== void 0 ? _f : []);
503
+ if (!!isUntouchedFilesObj) return [3 /*break*/, 2];
504
+ return [4 /*yield*/, handleEditDataOnBlur(columnId, editDataValueRef.current)];
505
+ case 1:
506
+ _g.sent();
507
+ _g.label = 2;
508
+ case 2:
509
+ handleModalEditClose();
510
+ return [2 /*return*/];
511
+ }
512
+ });
513
+ }); };
400
514
  var handleOnChangeText = function (e) {
401
515
  var cloned = handleGenerateClonedData();
402
516
  cloned[e.target.id] = e.target.value;
@@ -705,7 +819,7 @@ var NewTable = function (props) {
705
819
  }, false, cellInput, undefined, {
706
820
  dbModule: axios_1.default,
707
821
  devSettings: props.devSettings,
708
- referencesOptions: referencesOptions,
822
+ referencesOptions: mergedReferencesOptions,
709
823
  referencesDetails: referencesDetails,
710
824
  referenceLoading: referenceLoading,
711
825
  setReferenceLoading: setReferenceLoading,
@@ -833,7 +947,7 @@ var NewTable = function (props) {
833
947
  };
834
948
  // INFO: true when maxSelectedCount is set and the current selection has reached the limit
835
949
  var isMaxReached = !!props.maxSelectedCount &&
836
- ((_h = (_g = props.selectedIds) === null || _g === void 0 ? void 0 : _g.length) !== null && _h !== void 0 ? _h : 0) >= props.maxSelectedCount;
950
+ ((_j = (_h = props.selectedIds) === null || _h === void 0 ? void 0 : _h.length) !== null && _j !== void 0 ? _j : 0) >= props.maxSelectedCount;
837
951
  var renderFloatingActionBar = function () {
838
952
  var _a, _b, _c, _d, _e;
839
953
  if (!((_a = props.multiActionFloatingBtns) === null || _a === void 0 ? void 0 : _a.length))
@@ -1058,7 +1172,7 @@ var NewTable = function (props) {
1058
1172
  var isIdLike_1 = function (c) {
1059
1173
  return /^id$/i.test(c.key) || /^_id$/i.test(c.key);
1060
1174
  };
1061
- var titleCol_1 = (_j = flatColumns.find(function (c) { return !isIdLike_1(c); })) !== null && _j !== void 0 ? _j : flatColumns[0];
1175
+ var titleCol_1 = (_k = flatColumns.find(function (c) { return !isIdLike_1(c); })) !== null && _k !== void 0 ? _k : flatColumns[0];
1062
1176
  var expandHeaderBg_1 = props.darkMode ? "bg-gray-700" : "bg-gray-100";
1063
1177
  var expandHeaderFontColor_1 = props.darkMode ? "text-white" : "";
1064
1178
  var headerBgColor_1 = props.darkMode ? "bg-gray-900" : "";
@@ -1130,14 +1244,14 @@ var NewTable = function (props) {
1130
1244
  })))));
1131
1245
  };
1132
1246
  return (react_2.default.createElement("div", null,
1133
- react_2.default.createElement("div", { className: "w-full ".concat(((_k = props.mobileTooltip) === null || _k === void 0 ? void 0 : _k.tooltip) ? "overflow-visible" : "overflow-hidden", " border ").concat(borderRadius, " ").concat(borderColor, " ").concat(bgColor, " shadow-sm divide-y ").concat(dividerColor, " ").concat((_l = props.className) !== null && _l !== void 0 ? _l : "") },
1247
+ react_2.default.createElement("div", { className: "w-full ".concat(((_l = props.mobileTooltip) === null || _l === void 0 ? void 0 : _l.tooltip) ? "overflow-visible" : "overflow-hidden", " border ").concat(borderRadius, " ").concat(borderColor, " ").concat(bgColor, " shadow-sm divide-y ").concat(dividerColor, " ").concat((_m = props.className) !== null && _m !== void 0 ? _m : "") },
1134
1248
  react_2.default.createElement("div", { className: "p-3 flex justify-between" },
1135
1249
  renderSelectAll(),
1136
1250
  renderSelectedCount()),
1137
1251
  props.loading &&
1138
1252
  Array.from({ length: 3 }).map(function (_, i) { return (react_2.default.createElement("div", { key: "skeleton-".concat(i), className: "p-4" },
1139
1253
  react_2.default.createElement("div", { className: "h-5 w-3/4 rounded-md animate-pulse ".concat(props.darkMode ? "bg-gray-700" : "bg-gray-200") }))); }),
1140
- !props.loading && props.data.length === 0 && (react_2.default.createElement("p", { className: "p-4 text-center text-sm ".concat(cellFontColor) }, (_m = props.emptyTitle) !== null && _m !== void 0 ? _m : "No items")),
1254
+ !props.loading && props.data.length === 0 && (react_2.default.createElement("p", { className: "p-4 text-center text-sm ".concat(cellFontColor) }, (_o = props.emptyTitle) !== null && _o !== void 0 ? _o : "No items")),
1141
1255
  !props.loading &&
1142
1256
  props.data.map(function (row, index) {
1143
1257
  var _a, _b, _c, _d, _e, _f, _g;
@@ -1192,18 +1306,54 @@ var NewTable = function (props) {
1192
1306
  renderPagination())),
1193
1307
  renderFloatingActionBar()));
1194
1308
  }
1195
- return (react_2.default.createElement("div", { className: "w-full ".concat((_o = props.className) !== null && _o !== void 0 ? _o : "") },
1309
+ return (react_2.default.createElement("div", { className: "w-full ".concat((_p = props.className) !== null && _p !== void 0 ? _p : "") },
1196
1310
  react_2.default.createElement(modal_1.Modal, { open: filterModal ? true : false, title: "Filter Options", renderContent: function () {
1197
1311
  var _a, _b;
1198
1312
  return (react_2.default.createElement("div", { className: "pb-44" },
1199
1313
  react_2.default.createElement("div", { className: "pb-48" }, (_b = (_a = props.advSettings) === null || _a === void 0 ? void 0 : _a.renderFilterElements) === null || _b === void 0 ? void 0 : _b.call(_a, filterModal))));
1200
1314
  }, onClose: function () { return setFilterModal(""); } }),
1315
+ react_2.default.createElement(modal_1.Modal, { open: modalEditVisible, title: (_r = (_q = flatColumns.find(function (eachCol) { return eachCol.key === editDataHeaderKey; })) === null || _q === void 0 ? void 0 : _q.title) !== null && _r !== void 0 ? _r : "Edit", onClose: handleModalEditClose, renderContent: function () {
1316
+ var _a, _b, _c, _d;
1317
+ var selectedCol = flatColumns.find(function (eachCol) { return eachCol.key === editDataHeaderKey; });
1318
+ if (!selectedCol)
1319
+ return react_2.default.createElement("div", null);
1320
+ var tempDS = handleConvertColumnToDataStructure([selectedCol])[0];
1321
+ return (react_2.default.createElement("div", { className: "flex flex-col gap-4" },
1322
+ (0, updateModule_1.renderDataTemplateForm)(editDataValue, [tempDS], editDataInputRefs.current, {
1323
+ handleOnChangeAddress: handleOnChangeAddress,
1324
+ handleOnChangeText: handleOnChangeText,
1325
+ handleOnChangeSelect: handleOnChangeSelect,
1326
+ handleOnChangeDate: handleOnChangeDate,
1327
+ handleOnChangeFile: handleOnChangeFile,
1328
+ handleOnChangeFiles: handleOnChangeFiles,
1329
+ }, true, undefined, {
1330
+ id: editDataRowId,
1331
+ type: "list",
1332
+ showId: props.showId,
1333
+ }, {
1334
+ dbModule: axios_1.default,
1335
+ devSettings: props.devSettings,
1336
+ referencesOptions: mergedReferencesOptions,
1337
+ referencesDetails: referencesDetails,
1338
+ referenceLoading: referenceLoading,
1339
+ setReferenceLoading: setReferenceLoading,
1340
+ setReferencesOptions: setReferencesOptions,
1341
+ setReferencesDetails: setReferencesDetails,
1342
+ }, {
1343
+ imageEndpoint: (_b = (_a = props.devSettings) === null || _a === void 0 ? void 0 : _a.imageEndpoint) !== null && _b !== void 0 ? _b : "",
1344
+ imageBucketName: (_c = props.devSettings) === null || _c === void 0 ? void 0 : _c.bucketName,
1345
+ maxFileSize: (_d = props.devSettings) === null || _d === void 0 ? void 0 : _d.maxFileSize,
1346
+ }),
1347
+ react_2.default.createElement("div", { className: "flex justify-end gap-3", "data-testid": "table-modal-editor-actions" },
1348
+ react_2.default.createElement(button_1.Button, { text: "Cancel", type: "light", onClick: handleModalEditClose }),
1349
+ react_2.default.createElement(button_1.Button, { text: editDataIsLoading ? "Saving" : "Save", type: "normal", disable: editDataIsLoading, onClick: handleModalEditSave }))));
1350
+ } }),
1201
1351
  react_2.default.createElement(modal_1.Modal, { open: addColumnModal ? true : false, title: "Add Columns", renderContent: function () {
1202
1352
  var _a, _b;
1203
1353
  return (react_2.default.createElement("div", null, (_b = (_a = props.advSettings) === null || _a === void 0 ? void 0 : _a.renderAddColumnElements) === null || _b === void 0 ? void 0 : _b.call(_a, addColumnModal, function (id) { return handleAddColumnModal(id); })));
1204
1354
  }, onClose: function () { return handleAddColumnModal(""); } }),
1205
1355
  react_2.default.createElement("div", { className: "w-full overflow-x-auto ".concat(borderRadius, " border ").concat(borderColor, " ").concat(bgColor, " shadow-sm") },
1206
- (props.selectAll || ((_q = (_p = props.selectedIds) === null || _p === void 0 ? void 0 : _p.length) !== null && _q !== void 0 ? _q : 0) > 0) &&
1356
+ (props.selectAll || ((_t = (_s = props.selectedIds) === null || _s === void 0 ? void 0 : _s.length) !== null && _t !== void 0 ? _t : 0) > 0) &&
1207
1357
  (!props.multiActionFloatingBtns ||
1208
1358
  (props.multiActionFloatingBtns &&
1209
1359
  props.multiActionFloatingBtns.length <= 0)) && (react_2.default.createElement("div", { className: "sticky left-0 flex flex-row items-center px-4 py-3 gap-x-2" },
@@ -1249,19 +1399,47 @@ var NewTable = function (props) {
1249
1399
  ? "opacity-50 cursor-not-allowed"
1250
1400
  : ""))),
1251
1401
  flatColumns.map(function (col, colIndex) {
1252
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
1402
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
1253
1403
  var cellValue = spaceRow
1254
1404
  ? spaceRow[col.key]
1255
1405
  : resolveValue(row, col.key);
1256
1406
  // INFO: first col with type "string" is never made editable
1257
1407
  var resolvedColType = (_a = col.type) !== null && _a !== void 0 ? _a : "string";
1258
- var isEditable = ((_b = props.editable) === null || _b === void 0 ? void 0 : _b.active) &&
1259
- !(((_d = (_c = props.selectedIds) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) > 0 ||
1408
+ var isActionColumn = col.key === "update" && !col.type;
1409
+ var isModalEdit = ((_b = props.editable) === null || _b === void 0 ? void 0 : _b.active) &&
1410
+ !isActionColumn &&
1411
+ utils_1.supportedModalEditList.includes(resolvedColType);
1412
+ var isObjectEdit = ((_c = props.editable) === null || _c === void 0 ? void 0 : _c.active) &&
1413
+ !isActionColumn &&
1414
+ resolvedColType === "object" &&
1415
+ !!props.onObjectEdit;
1416
+ var isEditable = ((_d = props.editable) === null || _d === void 0 ? void 0 : _d.active) &&
1417
+ !isActionColumn &&
1418
+ !(((_f = (_e = props.selectedIds) === null || _e === void 0 ? void 0 : _e.length) !== null && _f !== void 0 ? _f : 0) > 0 ||
1260
1419
  props.selectAll) &&
1261
- utils_1.supportedTableAddList.includes(resolvedColType);
1420
+ utils_1.supportedInlineEditList.includes(resolvedColType);
1262
1421
  var rowData = editDataRowId === row.id ? editDataValue : row;
1422
+ if (isObjectEdit) {
1423
+ return (react_2.default.createElement("td", { key: col.key, className: "".concat(cellPadding, " text-sm ").concat(cellFontColor, " whitespace-nowrap") },
1424
+ react_2.default.createElement("div", { className: "cursor-pointer group/modaledit flex items-center gap-x-2 min-h-6", "data-testid": "table-object-edit-".concat(col.key), onClick: function (e) {
1425
+ var _a;
1426
+ e.stopPropagation();
1427
+ (_a = props.onObjectEdit) === null || _a === void 0 ? void 0 : _a.call(props, row.id, col.key, row);
1428
+ } },
1429
+ handleCheckModalEditEmpty(cellValue) ? (react_2.default.createElement("span", { className: "text-gray-400 italic" }, "Add")) : ((0, readModule_1.renderEachRowDataBasedOnDataType)(col.key, cellValue, props.bareSettings, true, props.disableEllipsisOnLongWord)),
1430
+ react_2.default.createElement(outline_1.PencilIcon, { className: "w-3.5 h-3.5 text-gray-400 opacity-0 group-hover/modaledit:opacity-100 flex-shrink-0" }))));
1431
+ }
1432
+ if (isModalEdit) {
1433
+ return (react_2.default.createElement("td", { key: col.key, className: "".concat(cellPadding, " text-sm ").concat(cellFontColor, " whitespace-nowrap") },
1434
+ react_2.default.createElement("div", { className: "cursor-pointer group/modaledit flex items-center gap-x-2 min-h-6", "data-testid": "table-modal-edit-".concat(col.key), onClick: function (e) {
1435
+ e.stopPropagation();
1436
+ handleModalEditOnClick(row.id, col.key, row);
1437
+ } },
1438
+ handleCheckModalEditEmpty(cellValue) ? (react_2.default.createElement("span", { className: "text-gray-400 italic" }, "Add")) : ((0, readModule_1.renderEachRowDataBasedOnDataType)(col.key, cellValue, props.bareSettings, true, props.disableEllipsisOnLongWord)),
1439
+ react_2.default.createElement(outline_1.PencilIcon, { className: "w-3.5 h-3.5 text-gray-400 opacity-0 group-hover/modaledit:opacity-100 flex-shrink-0" }))));
1440
+ }
1263
1441
  if (isEditable) {
1264
- var bareOverride = (_f = (_e = props.bareSettings) === null || _e === void 0 ? void 0 : _e.bareListDescription) === null || _f === void 0 ? void 0 : _f.call(_e, col.key, cellValue);
1442
+ var bareOverride = (_h = (_g = props.bareSettings) === null || _g === void 0 ? void 0 : _g.bareListDescription) === null || _h === void 0 ? void 0 : _h.call(_g, col.key, cellValue);
1265
1443
  if (!bareOverride)
1266
1444
  return renderEditDataInputs(colIndex, col, rowData, row.id, rowBgClass, isRowHoverable);
1267
1445
  }
@@ -1270,14 +1448,14 @@ var NewTable = function (props) {
1270
1448
  react_2.default.createElement("td", { key: col.key, "data-pin-key": leftPinned.includes(col.key) ||
1271
1449
  rightPinned.includes(col.key)
1272
1450
  ? col.key
1273
- : undefined, className: "".concat(cellPadding, " text-sm ").concat(colIndex === 0 && props.onClickRow ? titleFontColor : cellFontColor, " ").concat(col.width ? "".concat(col.width, " flex-shrink-0") : getPinProps(col.key, false) ? "" : "whitespace-nowrap", " ").concat((_h = (_g = getPinProps(col.key, false, rowBgClass, isRowHoverable)) === null || _g === void 0 ? void 0 : _g.className) !== null && _h !== void 0 ? _h : ""), style: (_j = getPinProps(col.key, false, rowBgClass, isRowHoverable)) === null || _j === void 0 ? void 0 : _j.style }, props.newTabUrl && props.onClickRow ? (react_2.default.createElement(link_1.Link, { href: props.newTabUrl +
1451
+ : undefined, className: "".concat(cellPadding, " text-sm ").concat(colIndex === 0 && props.onClickRow ? titleFontColor : cellFontColor, " ").concat(col.width ? "".concat(col.width, " flex-shrink-0") : getPinProps(col.key, false) ? "" : "whitespace-nowrap", " ").concat((_k = (_j = getPinProps(col.key, false, rowBgClass, isRowHoverable)) === null || _j === void 0 ? void 0 : _j.className) !== null && _k !== void 0 ? _k : ""), style: (_l = getPinProps(col.key, false, rowBgClass, isRowHoverable)) === null || _l === void 0 ? void 0 : _l.style }, props.newTabUrl && props.onClickRow ? (react_2.default.createElement(link_1.Link, { href: props.newTabUrl +
1274
1452
  row.id +
1275
- ((_k = props.addNewTabUrl) !== null && _k !== void 0 ? _k : ""), className: "w-full block", linkType: props.linkType, custom: props.custom }, (0, readModule_1.renderEachRowDataBasedOnDataType)(col.key, cellValue, props.bareSettings, true, props.disableEllipsisOnLongWord))) : ((0, readModule_1.renderEachRowDataBasedOnDataType)(col.key, cellValue, props.bareSettings, true, props.disableEllipsisOnLongWord))));
1453
+ ((_m = props.addNewTabUrl) !== null && _m !== void 0 ? _m : ""), className: "w-full block", linkType: props.linkType, custom: props.custom }, (0, readModule_1.renderEachRowDataBasedOnDataType)(col.key, cellValue, props.bareSettings, true, props.disableEllipsisOnLongWord))) : ((0, readModule_1.renderEachRowDataBasedOnDataType)(col.key, cellValue, props.bareSettings, true, props.disableEllipsisOnLongWord))));
1276
1454
  }),
1277
1455
  renderActionColumnCell(row.id)));
1278
1456
  }),
1279
1457
  !props.loading && addData && renderAddDataRow())),
1280
- !props.loading && props.data.length === 0 && (react_2.default.createElement("div", { className: "p-4 text-sm ".concat(cellFontColor, " text-center sticky left-0") }, (_r = props.emptyTitle) !== null && _r !== void 0 ? _r : "No items")),
1458
+ !props.loading && props.data.length === 0 && (react_2.default.createElement("div", { className: "p-4 text-sm ".concat(cellFontColor, " text-center sticky left-0") }, (_u = props.emptyTitle) !== null && _u !== void 0 ? _u : "No items")),
1281
1459
  renderAddableSection()),
1282
1460
  !props.hidePagination && props.paginationType && (react_2.default.createElement("div", { className: "mt-2 flex items-center justify-between ".concat(props.fixedPagination
1283
1461
  ? "pagination-container w-full ".concat(borderColor, " ").concat(isFixed ? "fixed bottom-0 left-0 z-10" : "sticky top-0 left-0")