blixify-ui-web 1.2.56 → 1.2.59

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 (63) hide show
  1. package/lib/components/chat/chatBase/index.d.ts +1 -1
  2. package/lib/components/chat/chatBase/index.d.ts.map +1 -1
  3. package/lib/components/chat/chatBase/index.js +8 -5
  4. package/lib/components/chat/chatBase/index.js.map +1 -1
  5. package/lib/components/data/dataTemplate/dataStateModel.d.ts +1 -0
  6. package/lib/components/data/dataTemplate/dataStateModel.d.ts.map +1 -1
  7. package/lib/components/data/dataTemplate/dataStateModel.js.map +1 -1
  8. package/lib/components/data/dataTemplate/index.d.ts.map +1 -1
  9. package/lib/components/data/dataTemplate/index.js +337 -221
  10. package/lib/components/data/dataTemplate/index.js.map +1 -1
  11. package/lib/components/data/dataTemplate/viewStatePersistence.d.ts +1 -0
  12. package/lib/components/data/dataTemplate/viewStatePersistence.d.ts.map +1 -1
  13. package/lib/components/data/dataTemplate/viewStatePersistence.js.map +1 -1
  14. package/lib/components/data/dataWrapper/dataWrapper.fixtures.d.ts +9 -0
  15. package/lib/components/data/dataWrapper/dataWrapper.fixtures.d.ts.map +1 -0
  16. package/lib/components/data/dataWrapper/dataWrapper.fixtures.js +33 -0
  17. package/lib/components/data/dataWrapper/dataWrapper.fixtures.js.map +1 -0
  18. package/lib/components/data/dataWrapper/index.d.ts +36 -1
  19. package/lib/components/data/dataWrapper/index.d.ts.map +1 -1
  20. package/lib/components/data/dataWrapper/index.js +206 -61
  21. package/lib/components/data/dataWrapper/index.js.map +1 -1
  22. package/lib/components/data/flexFilter/index.d.ts +1 -1
  23. package/lib/components/data/flexFilter/index.d.ts.map +1 -1
  24. package/lib/components/data/flexFilter/index.js +2 -3
  25. package/lib/components/data/flexFilter/index.js.map +1 -1
  26. package/lib/components/data/listModule.d.ts.map +1 -1
  27. package/lib/components/data/listModule.js +2 -3
  28. package/lib/components/data/listModule.js.map +1 -1
  29. package/lib/components/data/readQuery/index.d.ts.map +1 -1
  30. package/lib/components/data/readQuery/index.js +9 -2
  31. package/lib/components/data/readQuery/index.js.map +1 -1
  32. package/lib/components/data/updateModule.d.ts.map +1 -1
  33. package/lib/components/data/updateModule.js +18 -11
  34. package/lib/components/data/updateModule.js.map +1 -1
  35. package/lib/components/data/utils.d.ts +9 -1
  36. package/lib/components/data/utils.d.ts.map +1 -1
  37. package/lib/components/data/utils.js +74 -1
  38. package/lib/components/data/utils.js.map +1 -1
  39. package/lib/components/display/drawer/index.d.ts +22 -6
  40. package/lib/components/display/drawer/index.d.ts.map +1 -1
  41. package/lib/components/display/drawer/index.js +138 -17
  42. package/lib/components/display/drawer/index.js.map +1 -1
  43. package/lib/components/display/flexTable/newMobileItemCard.d.ts.map +1 -1
  44. package/lib/components/display/flexTable/newMobileItemCard.js +1 -2
  45. package/lib/components/display/flexTable/newMobileItemCard.js.map +1 -1
  46. package/lib/components/display/newTable/index.d.ts +1 -0
  47. package/lib/components/display/newTable/index.d.ts.map +1 -1
  48. package/lib/components/display/newTable/index.js +198 -23
  49. package/lib/components/display/newTable/index.js.map +1 -1
  50. package/lib/components/display/table/index.d.ts +19 -4
  51. package/lib/components/display/table/index.d.ts.map +1 -1
  52. package/lib/components/display/table/index.js +217 -36
  53. package/lib/components/display/table/index.js.map +1 -1
  54. package/lib/components/input/select/index.d.ts +1 -0
  55. package/lib/components/input/select/index.d.ts.map +1 -1
  56. package/lib/components/input/select/index.js +5 -2
  57. package/lib/components/input/select/index.js.map +1 -1
  58. package/lib/components/input/textArea/index.d.ts +5 -0
  59. package/lib/components/input/textArea/index.d.ts.map +1 -1
  60. package/lib/components/input/textArea/index.js +10 -3
  61. package/lib/components/input/textArea/index.js.map +1 -1
  62. package/lib/tail.css +2 -2
  63. package/package.json +1 -1
@@ -167,7 +167,7 @@ var handleGetWriteErrorMessage = function (response) {
167
167
  return "Please contact our administrator for assistance or try your request again later. We apologize for any inconvenience";
168
168
  };
169
169
  exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
170
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49;
170
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50;
171
171
  var intialiseDefaultFilterValues = function () {
172
172
  var _a;
173
173
  var initialFilterSearch = {};
@@ -228,67 +228,67 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
228
228
  initialFilterReferenceDate: initialFilterReferenceDate,
229
229
  };
230
230
  };
231
- var _50 = intialiseDefaultFilterValues(), initialFilterSearch = _50.initialFilterSearch, initialFilterSearchParams = _50.initialFilterSearchParams, initialFilterSelection = _50.initialFilterSelection, initialFilterReference = _50.initialFilterReference, initialFilterReferenceDate = _50.initialFilterReferenceDate;
231
+ var _51 = intialiseDefaultFilterValues(), initialFilterSearch = _51.initialFilterSearch, initialFilterSearchParams = _51.initialFilterSearchParams, initialFilterSelection = _51.initialFilterSelection, initialFilterReference = _51.initialFilterReference, initialFilterReferenceDate = _51.initialFilterReferenceDate;
232
232
  // INFO: Persist view state hook — handles storage read/write for filter/sort/column state
233
- var _51 = (0, viewStatePersistence_1.usePersistedViewState)({
233
+ var _52 = (0, viewStatePersistence_1.usePersistedViewState)({
234
234
  mode: (_a = props.organise) === null || _a === void 0 ? void 0 : _a.persistViewState,
235
235
  collectionId: props.collectionId,
236
236
  uniqueLabel: props.uniqueLabel,
237
237
  type: props.type,
238
- }), persistedState = _51.persistedState, isPersistEnabled = _51.isEnabled, handleSaveView = _51.handleSaveView;
239
- var _52 = (0, react_1.useState)(false), loading = _52[0], setLoading = _52[1];
240
- var _53 = (0, react_1.useState)(), notification = _53[0], setNotification = _53[1];
238
+ }), persistedState = _52.persistedState, isPersistEnabled = _52.isEnabled, handleSaveView = _52.handleSaveView;
239
+ var _53 = (0, react_1.useState)(false), loading = _53[0], setLoading = _53[1];
240
+ var _54 = (0, react_1.useState)(), notification = _54[0], setNotification = _54[1];
241
241
  //INFO : Used by List
242
- var _54 = (0, react_1.useState)((_b = persistedState === null || persistedState === void 0 ? void 0 : persistedState.filterSearchParams) !== null && _b !== void 0 ? _b : initialFilterSearch), filterSearch = _54[0], setFilterSearch = _54[1];
243
- var _55 = (0, react_1.useState)((_c = persistedState === null || persistedState === void 0 ? void 0 : persistedState.filterSearchParams) !== null && _c !== void 0 ? _c : initialFilterSearchParams), filterSearchParams = _55[0], setFilterSearchParams = _55[1];
244
- var _56 = (0, react_1.useState)((_d = persistedState === null || persistedState === void 0 ? void 0 : persistedState.filterSelection) !== null && _d !== void 0 ? _d : initialFilterSelection), filterSelection = _56[0], setFilterSelection = _56[1];
245
- var _57 = (0, react_1.useState)((_e = persistedState === null || persistedState === void 0 ? void 0 : persistedState.filterReference) !== null && _e !== void 0 ? _e : initialFilterReference), filterReference = _57[0], setFilterReference = _57[1];
246
- var _58 = (0, react_1.useState)({}), filterReferenceSearch = _58[0], setFilterReferenceSearch = _58[1];
247
- var _59 = (0, react_1.useState)({}), filterReferenceList = _59[0], setFilterReferenceList = _59[1];
248
- var _60 = (0, react_1.useState)((persistedState === null || persistedState === void 0 ? void 0 : persistedState.filterReferenceDate)
242
+ var _55 = (0, react_1.useState)((_b = persistedState === null || persistedState === void 0 ? void 0 : persistedState.filterSearchParams) !== null && _b !== void 0 ? _b : initialFilterSearch), filterSearch = _55[0], setFilterSearch = _55[1];
243
+ var _56 = (0, react_1.useState)((_c = persistedState === null || persistedState === void 0 ? void 0 : persistedState.filterSearchParams) !== null && _c !== void 0 ? _c : initialFilterSearchParams), filterSearchParams = _56[0], setFilterSearchParams = _56[1];
244
+ var _57 = (0, react_1.useState)((_d = persistedState === null || persistedState === void 0 ? void 0 : persistedState.filterSelection) !== null && _d !== void 0 ? _d : initialFilterSelection), filterSelection = _57[0], setFilterSelection = _57[1];
245
+ var _58 = (0, react_1.useState)((_e = persistedState === null || persistedState === void 0 ? void 0 : persistedState.filterReference) !== null && _e !== void 0 ? _e : initialFilterReference), filterReference = _58[0], setFilterReference = _58[1];
246
+ var _59 = (0, react_1.useState)({}), filterReferenceSearch = _59[0], setFilterReferenceSearch = _59[1];
247
+ var _60 = (0, react_1.useState)({}), filterReferenceList = _60[0], setFilterReferenceList = _60[1];
248
+ var _61 = (0, react_1.useState)((persistedState === null || persistedState === void 0 ? void 0 : persistedState.filterReferenceDate)
249
249
  ? (0, viewStatePersistence_1.parseDateFilterState)(persistedState.filterReferenceDate)
250
- : initialFilterReferenceDate), filterReferenceDate = _60[0], setFilterReferenceDate = _60[1];
251
- var _61 = (0, react_1.useState)(true), tableLoading = _61[0], setTableLoading = _61[1];
252
- var _62 = (0, react_1.useState)(""), cursor = _62[0], setCursor = _62[1];
253
- var _63 = (0, react_1.useState)(""), lastCursor = _63[0], setLastCursor = _63[1];
254
- var _64 = (0, react_1.useState)([]), tableData = _64[0], setTableData = _64[1];
255
- var _65 = (0, react_1.useState)([]), spaceTableData = _65[0], setSpaceTableData = _65[1];
256
- var _66 = (0, react_1.useState)(0), size = _66[0], setSize = _66[1];
257
- var _67 = (0, react_1.useState)((_h = (_f = persistedState === null || persistedState === void 0 ? void 0 : persistedState.pageIndex) !== null && _f !== void 0 ? _f : (_g = props.organise) === null || _g === void 0 ? void 0 : _g.pageIndex) !== null && _h !== void 0 ? _h : 0), pageIndex = _67[0], setPageIndex = _67[1];
258
- var _68 = (0, react_1.useState)([]), selectedIds = _68[0], setSelectedIds = _68[1];
259
- var _69 = (0, react_1.useState)(false), selectAll = _69[0], setSelectAll = _69[1];
260
- var _70 = (0, react_1.useState)(""), deletePasscode = _70[0], setDeletePasscode = _70[1];
261
- var _71 = (0, react_1.useState)(""), deletePasscodeInput = _71[0], setDeletePasscodeInput = _71[1];
262
- var _72 = (0, react_1.useState)(""), deleteFeedId = _72[0], setDeleteFeedId = _72[1];
250
+ : initialFilterReferenceDate), filterReferenceDate = _61[0], setFilterReferenceDate = _61[1];
251
+ var _62 = (0, react_1.useState)(true), tableLoading = _62[0], setTableLoading = _62[1];
252
+ var _63 = (0, react_1.useState)(""), cursor = _63[0], setCursor = _63[1];
253
+ var _64 = (0, react_1.useState)(""), lastCursor = _64[0], setLastCursor = _64[1];
254
+ var _65 = (0, react_1.useState)([]), tableData = _65[0], setTableData = _65[1];
255
+ var _66 = (0, react_1.useState)([]), spaceTableData = _66[0], setSpaceTableData = _66[1];
256
+ var _67 = (0, react_1.useState)(0), size = _67[0], setSize = _67[1];
257
+ var _68 = (0, react_1.useState)((_h = (_f = persistedState === null || persistedState === void 0 ? void 0 : persistedState.pageIndex) !== null && _f !== void 0 ? _f : (_g = props.organise) === null || _g === void 0 ? void 0 : _g.pageIndex) !== null && _h !== void 0 ? _h : 0), pageIndex = _68[0], setPageIndex = _68[1];
258
+ var _69 = (0, react_1.useState)([]), selectedIds = _69[0], setSelectedIds = _69[1];
259
+ var _70 = (0, react_1.useState)(false), selectAll = _70[0], setSelectAll = _70[1];
260
+ var _71 = (0, react_1.useState)(""), deletePasscode = _71[0], setDeletePasscode = _71[1];
261
+ var _72 = (0, react_1.useState)(""), deletePasscodeInput = _72[0], setDeletePasscodeInput = _72[1];
262
+ var _73 = (0, react_1.useState)(""), deleteFeedId = _73[0], setDeleteFeedId = _73[1];
263
263
  //INFO : Used by List Organise
264
- var _73 = (0, react_1.useState)(false), sortModal = _73[0], setSortModal = _73[1];
265
- var _74 = (0, react_1.useState)(false), filterModal = _74[0], setFilterModal = _74[1];
264
+ var _74 = (0, react_1.useState)(false), sortModal = _74[0], setSortModal = _74[1];
265
+ var _75 = (0, react_1.useState)(false), filterModal = _75[0], setFilterModal = _75[1];
266
266
  // INFO: Internal sort state that overrides props.organise?.sort when
267
267
  // persistViewState is enabled and a persisted sort exists
268
- var _75 = (0, react_1.useState)((_j = persistedState === null || persistedState === void 0 ? void 0 : persistedState.sort) !== null && _j !== void 0 ? _j : undefined), persistedSort = _75[0], setPersistedSort = _75[1];
269
- var _76 = (0, react_1.useState)(false), filterDraft = _76[0], setFilterDraft = _76[1];
270
- var _77 = (0, react_1.useState)(false), addTabModal = _77[0], setAddTabModal = _77[1];
271
- var _78 = (0, react_1.useState)(false), overviewModal = _78[0], setOverviewModal = _78[1];
268
+ var _76 = (0, react_1.useState)((_j = persistedState === null || persistedState === void 0 ? void 0 : persistedState.sort) !== null && _j !== void 0 ? _j : undefined), persistedSort = _76[0], setPersistedSort = _76[1];
269
+ var _77 = (0, react_1.useState)(false), filterDraft = _77[0], setFilterDraft = _77[1];
270
+ var _78 = (0, react_1.useState)(false), addTabModal = _78[0], setAddTabModal = _78[1];
271
+ var _79 = (0, react_1.useState)(false), overviewModal = _79[0], setOverviewModal = _79[1];
272
272
  //INFO : resolve the initial tab synchronously so the mount cond is already
273
273
  // tab-scoped — an empty initial tab caused a second wasted list fetch
274
- var _79 = (0, react_1.useState)(function () {
274
+ var _80 = (0, react_1.useState)(function () {
275
275
  var _a, _b;
276
276
  return (0, listModule_1.renderSelectedRefreshTab)(props.localURLEndpoint, props.type, props.collectionId, props.id, (_a = props.organise) === null || _a === void 0 ? void 0 : _a.extendedTabs, (_b = props.organise) === null || _b === void 0 ? void 0 : _b.viewId);
277
- }), selectedTab = _79[0], setSelectedTab = _79[1];
278
- var _80 = (0, react_1.useState)("dayGridMonth"), calendarView = _80[0], setCalendarView = _80[1];
277
+ }), selectedTab = _80[0], setSelectedTab = _80[1];
278
+ var _81 = (0, react_1.useState)("dayGridMonth"), calendarView = _81[0], setCalendarView = _81[1];
279
279
  // INFO: bareNewDTW calendar viewSwitch mode — drives the NewCalendar variant
280
280
  // (calendarView above drives the matching range query)
281
- var _81 = (0, react_1.useState)("month"), newCalendarViewMode = _81[0], setNewCalendarViewMode = _81[1];
282
- var _82 = (0, react_1.useState)(new Date()), calendarTabMonth = _82[0], setCalendarTabMonth = _82[1];
283
- var _83 = (0, react_1.useState)(true), kanbanDroppable = _83[0], setKanbanDroppable = _83[1];
284
- var _84 = (0, react_1.useState)([]), kanbanOptions = _84[0], setKanbanOptions = _84[1];
285
- var _85 = (0, react_1.useState)(false), queryForm = _85[0], setQueryForm = _85[1];
286
- var _86 = (0, react_1.useState)(false), batchUpdateModal = _86[0], setBatchUpdateModal = _86[1];
287
- var _87 = (0, react_1.useState)({
281
+ var _82 = (0, react_1.useState)("month"), newCalendarViewMode = _82[0], setNewCalendarViewMode = _82[1];
282
+ var _83 = (0, react_1.useState)(new Date()), calendarTabMonth = _83[0], setCalendarTabMonth = _83[1];
283
+ var _84 = (0, react_1.useState)(true), kanbanDroppable = _84[0], setKanbanDroppable = _84[1];
284
+ var _85 = (0, react_1.useState)([]), kanbanOptions = _85[0], setKanbanOptions = _85[1];
285
+ var _86 = (0, react_1.useState)(false), queryForm = _86[0], setQueryForm = _86[1];
286
+ var _87 = (0, react_1.useState)(false), batchUpdateModal = _87[0], setBatchUpdateModal = _87[1];
287
+ var _88 = (0, react_1.useState)({
288
288
  columnId: "",
289
289
  columnData: {},
290
- }), batchUpdateData = _87[0], setBatchUpdateData = _87[1];
291
- var _88 = (0, react_1.useState)(function () {
290
+ }), batchUpdateData = _88[0], setBatchUpdateData = _88[1];
291
+ var _89 = (0, react_1.useState)(function () {
292
292
  var baseModel = (props === null || props === void 0 ? void 0 : props.model) || [];
293
293
  if (!persistedState)
294
294
  return baseModel;
@@ -314,8 +314,8 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
314
314
  });
315
315
  }
316
316
  return model;
317
- }), structure = _88[0], setStructure = _88[1];
318
- var _89 = (0, react_1.useState)(((_k = props === null || props === void 0 ? void 0 : props.organise) === null || _k === void 0 ? void 0 : _k.additionalQuery) || []), additionalQuery = _89[0], setAdditionalQuery = _89[1];
317
+ }), structure = _89[0], setStructure = _89[1];
318
+ var _90 = (0, react_1.useState)(((_k = props === null || props === void 0 ? void 0 : props.organise) === null || _k === void 0 ? void 0 : _k.additionalQuery) || []), additionalQuery = _90[0], setAdditionalQuery = _90[1];
319
319
  // INFO: State for user-configurable flex filters (Monday.com-style)
320
320
  // INFO: Initialize with one empty row so users see inputs immediately without clicking "Add Filter"
321
321
  var defaultFlexFilterRow = [
@@ -326,97 +326,104 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
326
326
  value: undefined,
327
327
  },
328
328
  ];
329
- var _90 = (0, react_1.useState)((persistedState === null || persistedState === void 0 ? void 0 : persistedState.flexFilters) && persistedState.flexFilters.length > 0
329
+ var _91 = (0, react_1.useState)((persistedState === null || persistedState === void 0 ? void 0 : persistedState.flexFilters) && persistedState.flexFilters.length > 0
330
330
  ? persistedState.flexFilters
331
- : defaultFlexFilterRow), flexFilters = _90[0], setFlexFilters = _90[1];
331
+ : defaultFlexFilterRow), flexFilters = _91[0], setFlexFilters = _91[1];
332
332
  // INFO: Debounced version of flexFilters used by renderImpSearchFilterConditions
333
333
  // to prevent API calls on every keystroke when typing in value inputs
334
- var _91 = (0, react_1.useState)((persistedState === null || persistedState === void 0 ? void 0 : persistedState.flexFilters) && persistedState.flexFilters.length > 0
334
+ var _92 = (0, react_1.useState)((persistedState === null || persistedState === void 0 ? void 0 : persistedState.flexFilters) && persistedState.flexFilters.length > 0
335
335
  ? persistedState.flexFilters
336
- : defaultFlexFilterRow), flexFiltersDebounced = _91[0], setFlexFiltersDebounced = _91[1];
337
- var _92 = (0, react_1.useState)({}), flexFilterReferenceOptions = _92[0], setFlexFilterReferenceOptions = _92[1];
338
- var _93 = (0, react_1.useState)({}), flexFilterReferenceSearch = _93[0], setFlexFilterReferenceSearch = _93[1];
339
- var _94 = (0, react_1.useState)(false), flexFilterModalOpen = _94[0], setFlexFilterModalOpen = _94[1];
336
+ : defaultFlexFilterRow), flexFiltersDebounced = _92[0], setFlexFiltersDebounced = _92[1];
337
+ var _93 = (0, react_1.useState)({}), flexFilterReferenceOptions = _93[0], setFlexFilterReferenceOptions = _93[1];
338
+ var _94 = (0, react_1.useState)({}), flexFilterReferenceSearch = _94[0], setFlexFilterReferenceSearch = _94[1];
339
+ var _95 = (0, react_1.useState)(false), flexFilterModalOpen = _95[0], setFlexFilterModalOpen = _95[1];
340
+ // INFO: Columns the end user chose to hide (organise.hideColumnEnabled).
341
+ // Deliberately kept out of `structure`: the props-sync effect below resets
342
+ // structure to props.model whenever props change, which would wipe the
343
+ // choice, and the persist effect derives schema-level hiddenColumnIds from
344
+ // structure — writing user hides there would blur the two concepts.
345
+ var _96 = (0, react_1.useState)((_l = persistedState === null || persistedState === void 0 ? void 0 : persistedState.userHiddenColumnIds) !== null && _l !== void 0 ? _l : []), userHiddenColumnIds = _96[0], setUserHiddenColumnIds = _96[1];
340
346
  //INFO : Used by Auth
341
- var _95 = (0, react_1.useState)({
347
+ var _97 = (0, react_1.useState)({
342
348
  email: "",
343
349
  google: "",
344
350
  phone: "",
345
351
  disabled: false,
346
352
  create: false,
347
- }), authMethods = _95[0], setAuthMethods = _95[1];
348
- var _96 = (0, react_1.useState)(""), selectedAuthMethod = _96[0], setSelectedAuthMethod = _96[1];
353
+ }), authMethods = _97[0], setAuthMethods = _97[1];
354
+ var _98 = (0, react_1.useState)(""), selectedAuthMethod = _98[0], setSelectedAuthMethod = _98[1];
349
355
  // INFO: Used by Activity Log
350
- var _97 = (0, react_1.useState)(false), activityModal = _97[0], setActivityModal = _97[1];
351
- var _98 = (0, react_1.useState)(""), activityId = _98[0], setActivityId = _98[1];
356
+ var _99 = (0, react_1.useState)(false), activityModal = _99[0], setActivityModal = _99[1];
357
+ var _100 = (0, react_1.useState)(""), activityId = _100[0], setActivityId = _100[1];
352
358
  //INFO : Used by Export
353
- var _99 = (0, react_1.useState)(null), csvFile = _99[0], setCSVFile = _99[1];
354
- var _100 = (0, react_1.useState)([]), csvFileData = _100[0], setCSVFileData = _100[1];
355
- var _101 = (0, react_1.useState)(0), stepCSVIndex = _101[0], setStepCSVIndex = _101[1];
356
- var _102 = (0, react_1.useState)({}), listCSVMapAttribute = _102[0], setListCSVMapAttribute = _102[1];
357
- var _103 = (0, react_1.useState)({}), listCSVObjAttribute = _103[0], setListCSVObjAttribute = _103[1];
358
- var _104 = (0, react_1.useState)([]), csvAPIAttribute = _104[0], setCSVAPIAttribute = _104[1];
359
- var _105 = (0, react_1.useState)(((_l = props.devSettings.currentUser) === null || _l === void 0 ? void 0 : _l.userEmail) || ""), exportCSVEmail = _105[0], setExportCSVEmail = _105[1];
360
- var _106 = (0, react_1.useState)(((_o = (_m = props.organise) === null || _m === void 0 ? void 0 : _m.exportSettings) === null || _o === void 0 ? void 0 : _o.defaultExportPDFName) || ""), exportPDFTitle = _106[0], setExportPDFTitle = _106[1];
361
- var _107 = (0, react_1.useState)(false), exportPDFLoading = _107[0], setExportPDFLoading = _107[1];
362
- var _108 = (0, react_1.useState)(false), exportReadPDFLoading = _108[0], setExportReadPDFLoading = _108[1];
363
- var _109 = (0, react_1.useState)((_r = (_q = (_p = props.organise) === null || _p === void 0 ? void 0 : _p.exportSettings) === null || _q === void 0 ? void 0 : _q.sumColumnId) !== null && _r !== void 0 ? _r : []), exportSumAttributeIds = _109[0], setExportSumAttributeIds = _109[1];
364
- var _110 = (0, react_1.useState)((_u = (_t = (_s = props.organise) === null || _s === void 0 ? void 0 : _s.exportSettings) === null || _t === void 0 ? void 0 : _t.hideSubItems) !== null && _u !== void 0 ? _u : false), hideSubItems = _110[0], setHideSubItems = _110[1];
365
- var _111 = (0, react_1.useState)([]), importTableData = _111[0], setImportTableData = _111[1];
366
- var _112 = (0, react_1.useState)([]), queryList = _112[0], setQueryList = _112[1];
367
- var _113 = (0, react_1.useState)(undefined), allQueryList = _113[0], setAllQueryList = _113[1];
368
- var _114 = (0, react_1.useState)(-1), queryIndex = _114[0], setQueryIndex = _114[1];
369
- var _115 = (0, react_1.useState)((_v = props.organise) === null || _v === void 0 ? void 0 : _v.groupBy), groupId = _115[0], setGroupId = _115[1];
370
- var _116 = (0, react_1.useState)(""), readTabSection = _116[0], setReadTabSection = _116[1];
371
- var _117 = (0, react_1.useState)(false), readFloatingNav = _117[0], setReadFloatingNav = _117[1];
359
+ var _101 = (0, react_1.useState)(null), csvFile = _101[0], setCSVFile = _101[1];
360
+ var _102 = (0, react_1.useState)([]), csvFileData = _102[0], setCSVFileData = _102[1];
361
+ var _103 = (0, react_1.useState)(0), stepCSVIndex = _103[0], setStepCSVIndex = _103[1];
362
+ var _104 = (0, react_1.useState)({}), listCSVMapAttribute = _104[0], setListCSVMapAttribute = _104[1];
363
+ var _105 = (0, react_1.useState)({}), listCSVObjAttribute = _105[0], setListCSVObjAttribute = _105[1];
364
+ var _106 = (0, react_1.useState)([]), csvAPIAttribute = _106[0], setCSVAPIAttribute = _106[1];
365
+ var _107 = (0, react_1.useState)(((_m = props.devSettings.currentUser) === null || _m === void 0 ? void 0 : _m.userEmail) || ""), exportCSVEmail = _107[0], setExportCSVEmail = _107[1];
366
+ var _108 = (0, react_1.useState)(((_p = (_o = props.organise) === null || _o === void 0 ? void 0 : _o.exportSettings) === null || _p === void 0 ? void 0 : _p.defaultExportPDFName) || ""), exportPDFTitle = _108[0], setExportPDFTitle = _108[1];
367
+ var _109 = (0, react_1.useState)(false), exportPDFLoading = _109[0], setExportPDFLoading = _109[1];
368
+ var _110 = (0, react_1.useState)(false), exportReadPDFLoading = _110[0], setExportReadPDFLoading = _110[1];
369
+ var _111 = (0, react_1.useState)((_s = (_r = (_q = props.organise) === null || _q === void 0 ? void 0 : _q.exportSettings) === null || _r === void 0 ? void 0 : _r.sumColumnId) !== null && _s !== void 0 ? _s : []), exportSumAttributeIds = _111[0], setExportSumAttributeIds = _111[1];
370
+ var _112 = (0, react_1.useState)((_v = (_u = (_t = props.organise) === null || _t === void 0 ? void 0 : _t.exportSettings) === null || _u === void 0 ? void 0 : _u.hideSubItems) !== null && _v !== void 0 ? _v : false), hideSubItems = _112[0], setHideSubItems = _112[1];
371
+ var _113 = (0, react_1.useState)([]), importTableData = _113[0], setImportTableData = _113[1];
372
+ var _114 = (0, react_1.useState)([]), queryList = _114[0], setQueryList = _114[1];
373
+ var _115 = (0, react_1.useState)(undefined), allQueryList = _115[0], setAllQueryList = _115[1];
374
+ var _116 = (0, react_1.useState)(-1), queryIndex = _116[0], setQueryIndex = _116[1];
375
+ var _117 = (0, react_1.useState)((_w = props.organise) === null || _w === void 0 ? void 0 : _w.groupBy), groupId = _117[0], setGroupId = _117[1];
376
+ var _118 = (0, react_1.useState)(""), readTabSection = _118[0], setReadTabSection = _118[1];
377
+ var _119 = (0, react_1.useState)(false), readFloatingNav = _119[0], setReadFloatingNav = _119[1];
372
378
  var readTabSectionRefs = (0, react_1.useRef)({});
373
379
  //INFO : Used by Read
374
380
  //INFO : Used by Update
375
- var _118 = (0, react_1.useState)(false), modalVisible = _118[0], setModalVisible = _118[1];
376
- var _119 = (0, react_1.useState)(false), deleteModal = _119[0], setDeleteModal = _119[1];
377
- var _120 = (0, react_1.useState)(false), excelModal = _120[0], setExcelModal = _120[1];
378
- var _121 = (0, react_1.useState)(false), exportExcel = _121[0], setExportExcel = _121[1];
379
- var _122 = (0, react_1.useState)(""), exportType = _122[0], setExportType = _122[1];
380
- var _123 = (0, react_1.useState)(false), exportQR = _123[0], setExportQR = _123[1];
381
- var _124 = (0, react_1.useState)(function () {
381
+ var _120 = (0, react_1.useState)(false), modalVisible = _120[0], setModalVisible = _120[1];
382
+ var _121 = (0, react_1.useState)(false), deleteModal = _121[0], setDeleteModal = _121[1];
383
+ var _122 = (0, react_1.useState)(false), excelModal = _122[0], setExcelModal = _122[1];
384
+ var _123 = (0, react_1.useState)(false), exportExcel = _123[0], setExportExcel = _123[1];
385
+ var _124 = (0, react_1.useState)(""), exportType = _124[0], setExportType = _124[1];
386
+ var _125 = (0, react_1.useState)(false), exportQR = _125[0], setExportQR = _125[1];
387
+ var _126 = (0, react_1.useState)(function () {
382
388
  var _a, _b;
383
389
  var firstTabId = (_b = (_a = structure.find(function (item) { return item.tabId; })) === null || _a === void 0 ? void 0 : _a.tabId) !== null && _b !== void 0 ? _b : "";
384
390
  return firstTabId;
385
- }), activeTab = _124[0], setActiveTab = _124[1];
386
- var _125 = (0, react_1.useState)(false), signatureSigning = _125[0], setSignatureSigning = _125[1];
387
- var _126 = (0, react_1.useState)({}), selectedData = _126[0], setSelectedData = _126[1];
388
- var _127 = (0, react_1.useState)(""), selectedObjectStructureId = _127[0], setSelectedObjectStructureId = _127[1];
389
- var _128 = (0, react_1.useState)(""), selectedObjectId = _128[0], setSelectedObjectId = _128[1];
390
- var _129 = (0, react_1.useState)(""), selectedListAddressId = _129[0], setSelectedListAddressId = _129[1];
391
- var _130 = (0, react_1.useState)(-1), selectedListAddressIndex = _130[0], setSelectedListAddressIndex = _130[1];
392
- var _131 = (0, react_1.useState)({
391
+ }), activeTab = _126[0], setActiveTab = _126[1];
392
+ var _127 = (0, react_1.useState)(false), signatureSigning = _127[0], setSignatureSigning = _127[1];
393
+ var _128 = (0, react_1.useState)({}), selectedData = _128[0], setSelectedData = _128[1];
394
+ var _129 = (0, react_1.useState)(""), selectedObjectStructureId = _129[0], setSelectedObjectStructureId = _129[1];
395
+ var _130 = (0, react_1.useState)(""), selectedObjectId = _130[0], setSelectedObjectId = _130[1];
396
+ var _131 = (0, react_1.useState)(""), selectedListAddressId = _131[0], setSelectedListAddressId = _131[1];
397
+ var _132 = (0, react_1.useState)(-1), selectedListAddressIndex = _132[0], setSelectedListAddressIndex = _132[1];
398
+ var _133 = (0, react_1.useState)({
393
399
  lat: 0,
394
400
  lng: 0,
395
401
  name: "",
396
- }), selectedListAddress = _131[0], setSelectedListAddress = _131[1];
397
- var _132 = (0, react_1.useState)({}), selectedObjectData = _132[0], setSelectedObjectData = _132[1];
398
- var _133 = (0, react_1.useState)(false), referenceLoading = _133[0], setReferenceLoading = _133[1];
399
- var _134 = (0, react_1.useState)({}), referencesOptions = _134[0], setReferencesOptions = _134[1];
400
- var _135 = (0, react_1.useState)({}), referencesDetails = _135[0], setReferencesDetails = _135[1];
401
- var _136 = (0, react_1.useState)({}), referenceDeleteTableData = _136[0], setReferenceDeleteTableData = _136[1];
402
- var _137 = (0, react_1.useState)(0), referenceDeleteIndex = _137[0], setReferenceDeleteIndex = _137[1];
403
- var _138 = (0, react_1.useState)({
402
+ }), selectedListAddress = _133[0], setSelectedListAddress = _133[1];
403
+ var _134 = (0, react_1.useState)({}), selectedObjectData = _134[0], setSelectedObjectData = _134[1];
404
+ var _135 = (0, react_1.useState)(null), objectCellEdit = _135[0], setObjectCellEdit = _135[1];
405
+ var _136 = (0, react_1.useState)(false), referenceLoading = _136[0], setReferenceLoading = _136[1];
406
+ var _137 = (0, react_1.useState)({}), referencesOptions = _137[0], setReferencesOptions = _137[1];
407
+ var _138 = (0, react_1.useState)({}), referencesDetails = _138[0], setReferencesDetails = _138[1];
408
+ var _139 = (0, react_1.useState)({}), referenceDeleteTableData = _139[0], setReferenceDeleteTableData = _139[1];
409
+ var _140 = (0, react_1.useState)(0), referenceDeleteIndex = _140[0], setReferenceDeleteIndex = _140[1];
410
+ var _141 = (0, react_1.useState)({
404
411
  id: "",
405
412
  name: "",
406
413
  type: "string",
407
- }), referenceCreationModal = _138[0], setReferenceCreationModal = _138[1];
408
- var _139 = (0, react_1.useState)({}), referenceModelSchema = _139[0], setReferenceSchema = _139[1];
409
- var _140 = (0, react_1.useState)([]), kanbanChecked = _140[0], setKanbanChecked = _140[1];
414
+ }), referenceCreationModal = _141[0], setReferenceCreationModal = _141[1];
415
+ var _142 = (0, react_1.useState)({}), referenceModelSchema = _142[0], setReferenceSchema = _142[1];
416
+ var _143 = (0, react_1.useState)([]), kanbanChecked = _143[0], setKanbanChecked = _143[1];
410
417
  //INFO : Offline
411
- var _141 = (0, react_1.useState)(0), offlineDataLength = _141[0], setOfflineDataLength = _141[1];
412
- var _142 = (0, react_1.useState)(false), offlineModal = _142[0], setOfflineModal = _142[1];
418
+ var _144 = (0, react_1.useState)(0), offlineDataLength = _144[0], setOfflineDataLength = _144[1];
419
+ var _145 = (0, react_1.useState)(false), offlineModal = _145[0], setOfflineModal = _145[1];
413
420
  // INFO: live-stream state — driven by socket connection and navigator.onLine
414
- var _143 = (0, react_1.useState)(false), isLive = _143[0], setIsLive = _143[1];
415
- var _144 = (0, react_1.useState)(false), isLiveOffline = _144[0], setIsLiveOffline = _144[1];
421
+ var _146 = (0, react_1.useState)(false), isLive = _146[0], setIsLive = _146[1];
422
+ var _147 = (0, react_1.useState)(false), isLiveOffline = _147[0], setIsLiveOffline = _147[1];
416
423
  // INFO: true when navigator is offline — used to switch ReadQueryHoc between
417
424
  // server reads (online, full pagination) and IndexedDB reads (offline, cached data).
418
425
  // Independent of SSE status so it works even when bareSocketName is not set.
419
- var _145 = (0, react_1.useState)(typeof navigator !== "undefined" ? !navigator.onLine : false), isNetworkOffline = _145[0], setIsNetworkOffline = _145[1];
426
+ var _148 = (0, react_1.useState)(typeof navigator !== "undefined" ? !navigator.onLine : false), isNetworkOffline = _148[0], setIsNetworkOffline = _148[1];
420
427
  var previousType = (0, react_1.useRef)(null);
421
428
  var previousSelectedData = (0, react_1.useRef)(null);
422
429
  var scrollSentinelRef = (0, react_1.useRef)(null);
@@ -492,47 +499,47 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
492
499
  var isSubmittingRef = (0, react_1.useRef)(false);
493
500
  var devSettings = props.devSettings;
494
501
  var serverId = (0, utils_1.parseServerId)(devSettings.server);
495
- var viewType = (_x = (_w = props.organise) === null || _w === void 0 ? void 0 : _w.viewId) !== null && _x !== void 0 ? _x : "general";
502
+ var viewType = (_y = (_x = props.organise) === null || _x === void 0 ? void 0 : _x.viewId) !== null && _y !== void 0 ? _y : "general";
496
503
  var isFirebaseClient = devSettings.server === "firebase";
497
504
  var isFirebase = isFirebaseClient || devSettings.server === "fbServer";
498
- var dbModule = isFirebaseClient ? (_y = props.lib) === null || _y === void 0 ? void 0 : _y.firebase : (_z = props.lib) === null || _z === void 0 ? void 0 : _z.axios;
505
+ var dbModule = isFirebaseClient ? (_z = props.lib) === null || _z === void 0 ? void 0 : _z.firebase : (_0 = props.lib) === null || _0 === void 0 ? void 0 : _0.axios;
499
506
  var schemaPresent = props.devSettings.schemaEndpoint ? true : false;
500
507
  var limit = props.limit ? props.limit : 10;
501
- var activeSortId = (isPersistEnabled && persistedSort) || ((_0 = props.organise) === null || _0 === void 0 ? void 0 : _0.sort);
508
+ var activeSortId = (isPersistEnabled && persistedSort) || ((_1 = props.organise) === null || _1 === void 0 ? void 0 : _1.sort);
502
509
  var handleSortColumn = function (value) {
503
510
  var _a, _b;
504
511
  if (isPersistEnabled)
505
512
  setPersistedSort(value);
506
513
  (_b = (_a = props.organise) === null || _a === void 0 ? void 0 : _a.onChangeSort) === null || _b === void 0 ? void 0 : _b.call(_a, value);
507
514
  };
508
- var isEditor = ((_1 = props.edit) === null || _1 === void 0 ? void 0 : _1.allEditable) ? true : false;
509
- var isOffline = (_2 = props.bareSettings) === null || _2 === void 0 ? void 0 : _2.bareOffline;
515
+ var isEditor = ((_2 = props.edit) === null || _2 === void 0 ? void 0 : _2.allEditable) ? true : false;
516
+ var isOffline = (_3 = props.bareSettings) === null || _3 === void 0 ? void 0 : _3.bareOffline;
510
517
  // INFO: when bareOfflineNetworkAware is true, the save path is also gated on
511
518
  // the live network state — online saves go to the server even if bareOffline
512
519
  // is true, offline saves go to IDB as normal.
513
- var isOfflineNetworkListener = isOffline && ((_3 = props.bareSettings) === null || _3 === void 0 ? void 0 : _3.bareOfflineNetworkListener);
514
- var showId = (_4 = props.space) === null || _4 === void 0 ? void 0 : _4.showId;
520
+ var isOfflineNetworkListener = isOffline && ((_4 = props.bareSettings) === null || _4 === void 0 ? void 0 : _4.bareOfflineNetworkListener);
521
+ var showId = (_5 = props.space) === null || _5 === void 0 ? void 0 : _5.showId;
515
522
  var remainId = showId || selectedObjectStructureId ? true : false;
516
- var idField = ((_5 = props.space) === null || _5 === void 0 ? void 0 : _5.idField) || ((_6 = props.organise) === null || _6 === void 0 ? void 0 : _6.idField);
517
- var pipeline = (_7 = props === null || props === void 0 ? void 0 : props.space) === null || _7 === void 0 ? void 0 : _7.pipeline;
518
- if ((_8 = props.bareSettings) === null || _8 === void 0 ? void 0 : _8.bareListPipeline) {
523
+ var idField = ((_6 = props.space) === null || _6 === void 0 ? void 0 : _6.idField) || ((_7 = props.organise) === null || _7 === void 0 ? void 0 : _7.idField);
524
+ var pipeline = (_8 = props === null || props === void 0 ? void 0 : props.space) === null || _8 === void 0 ? void 0 : _8.pipeline;
525
+ if ((_9 = props.bareSettings) === null || _9 === void 0 ? void 0 : _9.bareListPipeline) {
519
526
  pipeline = pipeline
520
527
  ? __spreadArray(__spreadArray([], pipeline, true), props.bareSettings.bareListPipeline, true) : props.bareSettings.bareListPipeline;
521
528
  }
522
- var hasNavigation = ((_9 = props.organise) === null || _9 === void 0 ? void 0 : _9.handleNavigate) ? true : false;
529
+ var hasNavigation = ((_10 = props.organise) === null || _10 === void 0 ? void 0 : _10.handleNavigate) ? true : false;
523
530
  var formColumn = "grid-cols-12";
524
- var useMobileView = (_11 = (_10 = props.bareSettings) === null || _10 === void 0 ? void 0 : _10.bareUpdateMobileView) !== null && _11 !== void 0 ? _11 : false;
531
+ var useMobileView = (_12 = (_11 = props.bareSettings) === null || _11 === void 0 ? void 0 : _11.bareUpdateMobileView) !== null && _12 !== void 0 ? _12 : false;
525
532
  var gridGap = useMobileView ? "gap-x-6 gap-y-2 md:gap-y-6" : "gap-6";
526
- var isActivityLog = (((_13 = (_12 = props.edit) === null || _12 === void 0 ? void 0 : _12.activityLog) === null || _13 === void 0 ? void 0 : _13.enableComments) &&
527
- ((_14 = props.edit) === null || _14 === void 0 ? void 0 : _14.activityLog.commentCollectionId)) ||
528
- (((_16 = (_15 = props.edit) === null || _15 === void 0 ? void 0 : _15.activityLog) === null || _16 === void 0 ? void 0 : _16.enableLogs) &&
529
- ((_17 = props.edit) === null || _17 === void 0 ? void 0 : _17.activityLog.logsCollectionId));
530
- var customPaginationSize = ((_18 = props.organise) === null || _18 === void 0 ? void 0 : _18.customPaginationCount)
533
+ var isActivityLog = (((_14 = (_13 = props.edit) === null || _13 === void 0 ? void 0 : _13.activityLog) === null || _14 === void 0 ? void 0 : _14.enableComments) &&
534
+ ((_15 = props.edit) === null || _15 === void 0 ? void 0 : _15.activityLog.commentCollectionId)) ||
535
+ (((_17 = (_16 = props.edit) === null || _16 === void 0 ? void 0 : _16.activityLog) === null || _17 === void 0 ? void 0 : _17.enableLogs) &&
536
+ ((_18 = props.edit) === null || _18 === void 0 ? void 0 : _18.activityLog.logsCollectionId));
537
+ var customPaginationSize = ((_19 = props.organise) === null || _19 === void 0 ? void 0 : _19.customPaginationCount)
531
538
  ? props.organise.customPaginationCount(size)
532
539
  : undefined;
533
540
  //TODO : Code - Pass ...devSettings, search dbEndpoint:
534
541
  var writeServerQuery = new writeQuery_1.WriteQuery({
535
- dbModule: (_19 = props.lib) === null || _19 === void 0 ? void 0 : _19.axios,
542
+ dbModule: (_20 = props.lib) === null || _20 === void 0 ? void 0 : _20.axios,
536
543
  dbType: devSettings.server,
537
544
  dbCollection: props.collectionId,
538
545
  dbEndpoint: devSettings.dbEndpoint,
@@ -540,7 +547,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
540
547
  dbUserToken: devSettings.dbUserToken,
541
548
  });
542
549
  var readServerQuery = new readQuery_1.ReadQuery({
543
- dbModule: (_20 = props.lib) === null || _20 === void 0 ? void 0 : _20.axios,
550
+ dbModule: (_21 = props.lib) === null || _21 === void 0 ? void 0 : _21.axios,
544
551
  dbType: devSettings.server,
545
552
  dbCollection: props.collectionId,
546
553
  dbEndpoint: devSettings.dbEndpoint,
@@ -548,9 +555,9 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
548
555
  dbUserToken: devSettings.dbUserToken,
549
556
  });
550
557
  var moreButtonPopUp = [
551
- ((_21 = props.edit) === null || _21 === void 0 ? void 0 : _21.allEditable) &&
558
+ ((_22 = props.edit) === null || _22 === void 0 ? void 0 : _22.allEditable) &&
552
559
  !isFirebase &&
553
- !((_23 = (_22 = props.organise) === null || _22 === void 0 ? void 0 : _22.exportSettings) === null || _23 === void 0 ? void 0 : _23.hideImportCSV)
560
+ !((_24 = (_23 = props.organise) === null || _23 === void 0 ? void 0 : _23.exportSettings) === null || _24 === void 0 ? void 0 : _24.hideImportCSV)
554
561
  ? {
555
562
  text: "Import Excel",
556
563
  onClick: function () {
@@ -559,7 +566,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
559
566
  },
560
567
  }
561
568
  : null,
562
- !((_25 = (_24 = props.organise) === null || _24 === void 0 ? void 0 : _24.exportSettings) === null || _25 === void 0 ? void 0 : _25.hideExportCSV)
569
+ !((_26 = (_25 = props.organise) === null || _25 === void 0 ? void 0 : _25.exportSettings) === null || _26 === void 0 ? void 0 : _26.hideExportCSV)
563
570
  ? {
564
571
  text: "Export CSV",
565
572
  onClick: function () {
@@ -569,7 +576,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
569
576
  },
570
577
  }
571
578
  : null,
572
- !((_27 = (_26 = props.organise) === null || _26 === void 0 ? void 0 : _26.exportSettings) === null || _27 === void 0 ? void 0 : _27.hideExportExcel)
579
+ !((_28 = (_27 = props.organise) === null || _27 === void 0 ? void 0 : _27.exportSettings) === null || _28 === void 0 ? void 0 : _28.hideExportExcel)
573
580
  ? {
574
581
  text: "Export Excel",
575
582
  onClick: function () {
@@ -579,7 +586,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
579
586
  },
580
587
  }
581
588
  : null,
582
- !((_29 = (_28 = props.organise) === null || _28 === void 0 ? void 0 : _28.exportSettings) === null || _29 === void 0 ? void 0 : _29.hideExportPDF)
589
+ !((_30 = (_29 = props.organise) === null || _29 === void 0 ? void 0 : _29.exportSettings) === null || _30 === void 0 ? void 0 : _30.hideExportPDF)
583
590
  ? {
584
591
  text: "Export PDF",
585
592
  onClick: function () {
@@ -589,7 +596,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
589
596
  },
590
597
  }
591
598
  : null,
592
- !((_31 = (_30 = props.organise) === null || _30 === void 0 ? void 0 : _30.exportSettings) === null || _31 === void 0 ? void 0 : _31.hideExportQR)
599
+ !((_32 = (_31 = props.organise) === null || _31 === void 0 ? void 0 : _31.exportSettings) === null || _32 === void 0 ? void 0 : _32.hideExportQR)
593
600
  ? {
594
601
  text: "Export QR",
595
602
  onClick: function () {
@@ -599,7 +606,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
599
606
  },
600
607
  }
601
608
  : null,
602
- !((_33 = (_32 = props.organise) === null || _32 === void 0 ? void 0 : _32.exportSettings) === null || _33 === void 0 ? void 0 : _33.hideExportQR)
609
+ !((_34 = (_33 = props.organise) === null || _33 === void 0 ? void 0 : _33.exportSettings) === null || _34 === void 0 ? void 0 : _34.hideExportQR)
603
610
  ? {
604
611
  text: "Export QR(Data)",
605
612
  onClick: function () {
@@ -609,7 +616,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
609
616
  },
610
617
  }
611
618
  : null,
612
- !((_35 = (_34 = props.organise) === null || _34 === void 0 ? void 0 : _34.exportSettings) === null || _35 === void 0 ? void 0 : _35.hideExportPrint)
619
+ !((_36 = (_35 = props.organise) === null || _35 === void 0 ? void 0 : _35.exportSettings) === null || _36 === void 0 ? void 0 : _36.hideExportPrint)
613
620
  ? {
614
621
  text: "Print",
615
622
  onClick: function () {
@@ -619,7 +626,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
619
626
  },
620
627
  }
621
628
  : null,
622
- !((_37 = (_36 = props.organise) === null || _36 === void 0 ? void 0 : _36.exportSettings) === null || _37 === void 0 ? void 0 : _37.hideExportDraft)
629
+ !((_38 = (_37 = props.organise) === null || _37 === void 0 ? void 0 : _37.exportSettings) === null || _38 === void 0 ? void 0 : _38.hideExportDraft)
623
630
  ? {
624
631
  text: filterDraft ? "Show All Items" : "Filter Draft",
625
632
  onClick: function () {
@@ -628,9 +635,22 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
628
635
  }
629
636
  : null,
630
637
  ].filter(Boolean);
631
- if ((_38 = props.organise) === null || _38 === void 0 ? void 0 : _38.moreSettings)
638
+ if ((_39 = props.organise) === null || _39 === void 0 ? void 0 : _39.moreSettings)
632
639
  moreButtonPopUp = moreButtonPopUp.concat(props.organise.moreSettings);
633
640
  //=====================================================================================
641
+ //SECTION: User Column Visibility Handlers
642
+ //=====================================================================================
643
+ var handleToggleUserHiddenColumn = function (columnId) {
644
+ setUserHiddenColumnIds(function (prevIds) {
645
+ return prevIds.includes(columnId)
646
+ ? prevIds.filter(function (eachId) { return eachId !== columnId; })
647
+ : __spreadArray(__spreadArray([], prevIds, true), [columnId], false);
648
+ });
649
+ };
650
+ var handleShowAllUserHiddenColumns = function () {
651
+ setUserHiddenColumnIds([]);
652
+ };
653
+ //=====================================================================================
634
654
  //SECTION: Flex Filter Handlers
635
655
  //=====================================================================================
636
656
  // INFO: cancel any pending value-typing timer before setting flexFiltersDebounced
@@ -755,6 +775,16 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
755
775
  };
756
776
  (0, react_1.useImperativeHandle)(ref, function () { return ({
757
777
  handleRefresh: handleRefresh,
778
+ // INFO: refetches whatever is currently mounted without touching pageIndex, cursor or
779
+ // filters. handleRefresh clears those (handleClearDataByFilter resets pageIndex to 0),
780
+ // which is right when the caller wants a clean slate but wrong when it only needs the
781
+ // data reloaded in place — e.g. reflecting a write made in an overlay without bouncing
782
+ // the user back to page 1.
783
+ handleRefreshCurrentPage: function () {
784
+ var _a, _b;
785
+ (_a = listRQueryHocRef.current) === null || _a === void 0 ? void 0 : _a.handleRefresh();
786
+ (_b = readQueryHocRef.current) === null || _b === void 0 ? void 0 : _b.handleRefresh();
787
+ },
758
788
  handleFormSubmit: handleFormSubmit,
759
789
  handleFormCheck: handleFormCheck,
760
790
  handlePopUpModal: handlePopUpModal,
@@ -806,6 +836,10 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
806
836
  // a mid-scroll pageIndex would skip rows on next hydration.
807
837
  pageIndex: renderCheckScrollMode() ? 0 : pageIndex,
808
838
  hiddenColumnIds: structure.filter(function (col) { return col.hide; }).map(function (col) { return col.id; }),
839
+ // INFO: stored raw rather than through getActiveUserHiddenColumnIds so a
840
+ // consumer temporarily switching hideColumnEnabled off does not wipe the
841
+ // user's saved choice.
842
+ userHiddenColumnIds: userHiddenColumnIds,
809
843
  columnOrder: structure.map(function (col) { return col.id; }),
810
844
  });
811
845
  }, [
@@ -817,6 +851,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
817
851
  pageIndex,
818
852
  structure,
819
853
  persistedSort,
854
+ userHiddenColumnIds,
820
855
  ]);
821
856
  (0, react_1.useEffect)(function () {
822
857
  handleCheckOfflineDataLength();
@@ -829,7 +864,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
829
864
  (0, react_1.useEffect)(function () {
830
865
  handleOfflinePrefetch();
831
866
  /* eslint-disable */
832
- }, [props.collectionId, (_39 = props.bareSettings) === null || _39 === void 0 ? void 0 : _39.bareOffline]);
867
+ }, [props.collectionId, (_40 = props.bareSettings) === null || _40 === void 0 ? void 0 : _40.bareOffline]);
833
868
  /* eslint-enable */
834
869
  // INFO: MRQ polling — calls handleRefresh every N ms (e.g. 1500) as a fallback.
835
870
  // Calls through handleRefreshRef so the interval always dispatches the latest
@@ -849,7 +884,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
849
884
  }, interval);
850
885
  return function () { return clearInterval(timer); };
851
886
  /* eslint-disable */
852
- }, [(_40 = props.bareSettings) === null || _40 === void 0 ? void 0 : _40.barePollingInterval, isLive, isNetworkOffline]);
887
+ }, [(_41 = props.bareSettings) === null || _41 === void 0 ? void 0 : _41.barePollingInterval, isLive, isNetworkOffline]);
853
888
  /* eslint-enable */
854
889
  // INFO: Pub/Sub → SSE live-stream — driven by bareSettings.bareSocketName
855
890
  // EventSource URL: {sseEndpoint}/{room}?bm_apiToken={token}
@@ -891,7 +926,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
891
926
  };
892
927
  /* eslint-disable */
893
928
  }, [
894
- (_41 = props.bareSettings) === null || _41 === void 0 ? void 0 : _41.bareSocketName,
929
+ (_42 = props.bareSettings) === null || _42 === void 0 ? void 0 : _42.bareSocketName,
895
930
  props.collectionId,
896
931
  props.devSettings.sseEndpoint,
897
932
  props.devSettings.dbAPIToken,
@@ -1130,10 +1165,10 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
1130
1165
  props.collectionId,
1131
1166
  props.model,
1132
1167
  props.localURLEndpoint,
1133
- (_42 = props.organise) === null || _42 === void 0 ? void 0 : _42.extendedTabs,
1134
- (_43 = props.organise) === null || _43 === void 0 ? void 0 : _43.viewId,
1135
- (_44 = props.organise) === null || _44 === void 0 ? void 0 : _44.additionalQuery,
1136
- (_45 = props.organise) === null || _45 === void 0 ? void 0 : _45.groupBy,
1168
+ (_43 = props.organise) === null || _43 === void 0 ? void 0 : _43.extendedTabs,
1169
+ (_44 = props.organise) === null || _44 === void 0 ? void 0 : _44.viewId,
1170
+ (_45 = props.organise) === null || _45 === void 0 ? void 0 : _45.additionalQuery,
1171
+ (_46 = props.organise) === null || _46 === void 0 ? void 0 : _46.groupBy,
1137
1172
  props.type,
1138
1173
  ]);
1139
1174
  (0, react_1.useEffect)(function () {
@@ -1223,7 +1258,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
1223
1258
  };
1224
1259
  }, 100);
1225
1260
  return function () { return clearTimeout(timeoutId); };
1226
- }, [(_46 = props.organise) === null || _46 === void 0 ? void 0 : _46.showReadFloatingNav, props.type, props.id, loading]);
1261
+ }, [(_47 = props.organise) === null || _47 === void 0 ? void 0 : _47.showReadFloatingNav, props.type, props.id, loading]);
1227
1262
  (0, react_1.useEffect)(function () {
1228
1263
  if (props.type !== "read")
1229
1264
  return;
@@ -1432,7 +1467,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
1432
1467
  switch (_a.label) {
1433
1468
  case 0:
1434
1469
  refFields = structure.filter(function (s) {
1435
- return (s.type === "reference" || s.type === "listReference") &&
1470
+ return (utils_1.REFERENCE_DATA_TYPES.includes(s.type)) &&
1436
1471
  s.referenceSpaceId &&
1437
1472
  s.referenceLabel;
1438
1473
  });
@@ -2099,22 +2134,20 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2099
2134
  return __generator(this, function (_a) {
2100
2135
  switch (_a.label) {
2101
2136
  case 0:
2102
- if (!((eachModel.type === "reference" ||
2103
- eachModel.type === "listReference") &&
2137
+ if (!((utils_1.REFERENCE_DATA_TYPES.includes(eachModel.type)) &&
2104
2138
  eachModel.referenceMapColumnId)) return [3 /*break*/, 2];
2105
2139
  return [4 /*yield*/, (0, updateModule_1.handleRetrieveObjectReferenceOptions)(eachModel, clonedOptions_1, clonedDetails_1, selectedData, dbModule, devSettings, undefined, undefined, undefined, undefined, props.type === "read")];
2106
2140
  case 1:
2107
2141
  _a.sent();
2108
2142
  _a.label = 2;
2109
2143
  case 2:
2110
- if (!((eachModel.type === "object" || eachModel.type === "listObject") &&
2144
+ if (!((utils_1.OBJECT_DATA_TYPES.includes(eachModel.type)) &&
2111
2145
  eachModel.objectData)) return [3 /*break*/, 4];
2112
2146
  return [4 /*yield*/, Promise.all(eachModel.objectData.map(function (eachObjectData) { return __awaiter(void 0, void 0, void 0, function () {
2113
2147
  return __generator(this, function (_a) {
2114
2148
  switch (_a.label) {
2115
2149
  case 0:
2116
- if (!((eachObjectData.type === "reference" ||
2117
- eachObjectData.type === "listReference") &&
2150
+ if (!((utils_1.REFERENCE_DATA_TYPES.includes(eachObjectData.type)) &&
2118
2151
  eachObjectData.referenceMapColumnId)) return [3 /*break*/, 2];
2119
2152
  return [4 /*yield*/, (0, updateModule_1.handleRetrieveObjectReferenceOptions)(eachObjectData, clonedOptions_1, clonedDetails_1, selectedData, dbModule, devSettings, eachModel.id, eachModel.type === "listObject", selectedData, undefined, props.type === "read")];
2120
2153
  case 1:
@@ -2337,16 +2370,25 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2337
2370
  handlePopUpModal(false);
2338
2371
  }
2339
2372
  };
2373
+ var handleObjectCellEdit = function (rowId, columnId, data) {
2374
+ var _a;
2375
+ setObjectCellEdit({ rowId: rowId, columnId: columnId });
2376
+ setSelectedObjectStructureId(columnId);
2377
+ setSelectedObjectData((_a = data === null || data === void 0 ? void 0 : data[columnId]) !== null && _a !== void 0 ? _a : {});
2378
+ setSelectedObjectId("");
2379
+ handlePopUpModal(true);
2380
+ };
2340
2381
  var handleSubmitObjectDataType = function () {
2341
- var _a, _b, _c;
2382
+ var _a;
2383
+ var _b, _c, _d;
2342
2384
  var clonedSelectedData = (0, updateModule_1.handleClonedDataAttribute)(selectedData, structure, props.devSettings.server, false, showId);
2343
2385
  var filterObjectModel = structure.find(function (eachModel) {
2344
2386
  return eachModel.id === selectedObjectStructureId;
2345
2387
  });
2346
- var clonedSelectedObjectData = (0, updateModule_1.handleClonedDataAttribute)(selectedObjectData, (_a = filterObjectModel === null || filterObjectModel === void 0 ? void 0 : filterObjectModel.objectData) !== null && _a !== void 0 ? _a : [], props.devSettings.server, true, true);
2388
+ var clonedSelectedObjectData = (0, updateModule_1.handleClonedDataAttribute)(selectedObjectData, (_b = filterObjectModel === null || filterObjectModel === void 0 ? void 0 : filterObjectModel.objectData) !== null && _b !== void 0 ? _b : [], props.devSettings.server, true, true);
2347
2389
  // Clean up canvas background images that were unselected or cleared
2348
2390
  // If a canvas has backgroundImage with _cleared flag, clear it when modal closes
2349
- (_b = filterObjectModel === null || filterObjectModel === void 0 ? void 0 : filterObjectModel.objectData) === null || _b === void 0 ? void 0 : _b.forEach(function (eachAttribute) {
2391
+ (_c = filterObjectModel === null || filterObjectModel === void 0 ? void 0 : filterObjectModel.objectData) === null || _c === void 0 ? void 0 : _c.forEach(function (eachAttribute) {
2350
2392
  if (eachAttribute.type === "canvas" &&
2351
2393
  eachAttribute.enableImageUpload &&
2352
2394
  clonedSelectedObjectData[eachAttribute.id] &&
@@ -2398,7 +2440,17 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2398
2440
  }
2399
2441
  else {
2400
2442
  //INFO: [UPDATE] Updating an object field
2401
- var clonedSelectedObjectData_1 = (0, updateModule_1.handleClonedDataAttribute)(selectedObjectData, (_c = filterObjectModel === null || filterObjectModel === void 0 ? void 0 : filterObjectModel.objectData) !== null && _c !== void 0 ? _c : [], props.devSettings.server, true);
2443
+ var clonedSelectedObjectData_1 = (0, updateModule_1.handleClonedDataAttribute)(selectedObjectData, (_d = filterObjectModel === null || filterObjectModel === void 0 ? void 0 : filterObjectModel.objectData) !== null && _d !== void 0 ? _d : [], props.devSettings.server, true);
2444
+ if (objectCellEdit) {
2445
+ handleSubmitData("update", objectCellEdit.rowId, objectCellEdit.columnId, (_a = {},
2446
+ _a[objectCellEdit.columnId] = clonedSelectedObjectData_1,
2447
+ _a));
2448
+ setObjectCellEdit(null);
2449
+ setSelectedObjectStructureId("");
2450
+ setSelectedObjectData({});
2451
+ handlePopUpModal(false);
2452
+ return;
2453
+ }
2402
2454
  clonedSelectedData[selectedObjectStructureId] = clonedSelectedObjectData_1;
2403
2455
  setSelectedData(clonedSelectedData);
2404
2456
  }
@@ -2946,8 +2998,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2946
2998
  case 1:
2947
2999
  _a.sent();
2948
3000
  multiImageAttribute = model.filter(function (eachAttribute) {
2949
- return (eachAttribute.type === "multipleImage" ||
2950
- eachAttribute.type === "multipleFile");
3001
+ return (utils_1.MULTIPLE_ASSET_DATA_TYPES.includes(eachAttribute.type));
2951
3002
  });
2952
3003
  return [4 /*yield*/, Promise.all(multiImageAttribute.map(function (eachImage) { return __awaiter(void 0, void 0, void 0, function () {
2953
3004
  var _a, _b, _c, _d;
@@ -4679,7 +4730,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
4679
4730
  return __generator(this, function (_c) {
4680
4731
  switch (_c.label) {
4681
4732
  case 0:
4682
- isObject = eachModel.type === "listObject" || eachModel.type === "object";
4733
+ isObject = utils_1.OBJECT_DATA_TYPES.includes(eachModel.type);
4683
4734
  return [4 /*yield*/, indexedDb_1.indexedDb.getValue("local", eachModel.referenceSpaceId + "-ref")];
4684
4735
  case 1:
4685
4736
  offlineDataResp = _c.sent();
@@ -4690,8 +4741,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
4690
4741
  // INFO: convert raw docs to Option[] format so reference Select
4691
4742
  // components receive { key, label, secondaryLabel } as expected
4692
4743
  // (mirrors the shape handleRetrieveObjectReferenceOptions builds online)
4693
- if ((eachModel.type === "reference" ||
4694
- eachModel.type === "listReference") &&
4744
+ if ((utils_1.REFERENCE_DATA_TYPES.includes(eachModel.type)) &&
4695
4745
  eachModel.referenceLabel) {
4696
4746
  clonedReferencesOptions_1[eachModel.id] = offlineData.map(function (r) {
4697
4747
  var _a, _b, _c, _d;
@@ -5149,15 +5199,13 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
5149
5199
  var selectedModel = structure.find(function (eachModel) {
5150
5200
  return eachModel.id === eachValue;
5151
5201
  });
5152
- if ((selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.type) === "object" ||
5153
- (selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.type) === "listObject") {
5202
+ if ((selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.type) === "object" || (selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.type) === "listObject") {
5154
5203
  var selectedObjectModel = (_c = selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.objectData) === null || _c === void 0 ? void 0 : _c.find(function (eachModel) {
5155
5204
  return eachModel.id === listCSVObjAttribute[eachKey];
5156
5205
  });
5157
5206
  if ((selectedObjectModel === null || selectedObjectModel === void 0 ? void 0 : selectedObjectModel.type) === "image" ||
5158
5207
  (selectedObjectModel === null || selectedObjectModel === void 0 ? void 0 : selectedObjectModel.type) === "file" ||
5159
- (selectedObjectModel === null || selectedObjectModel === void 0 ? void 0 : selectedObjectModel.type) === "multipleFile" ||
5160
- (selectedObjectModel === null || selectedObjectModel === void 0 ? void 0 : selectedObjectModel.type) === "multipleImage") {
5208
+ (selectedObjectModel === null || selectedObjectModel === void 0 ? void 0 : selectedObjectModel.type) === "multipleImage" || (selectedObjectModel === null || selectedObjectModel === void 0 ? void 0 : selectedObjectModel.type) === "multipleFile") {
5161
5209
  csvList_1.push({
5162
5210
  id: (_d = listCSVObjAttribute[eachKey]) !== null && _d !== void 0 ? _d : "",
5163
5211
  ori: Number(eachKey),
@@ -5181,8 +5229,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
5181
5229
  }
5182
5230
  else if ((selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.type) === "image" ||
5183
5231
  (selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.type) === "file" ||
5184
- (selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.type) === "multipleFile" ||
5185
- (selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.type) === "multipleImage") {
5232
+ (selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.type) === "multipleImage" || (selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.type) === "multipleFile") {
5186
5233
  csvList_1.push({
5187
5234
  id: eachValue !== null && eachValue !== void 0 ? eachValue : "",
5188
5235
  ori: Number(eachKey),
@@ -5214,8 +5261,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
5214
5261
  if (!eachEachModel.optional) {
5215
5262
  // INFO : Validate and compare the modal with csv list and return true if > 1 consist within
5216
5263
  var innearValidation = csvList_1.some(function (eachCsvList) {
5217
- if (eachCsvList.type === "object" ||
5218
- eachCsvList.type === "listObject") {
5264
+ if (utils_1.OBJECT_DATA_TYPES.includes(eachCsvList.type)) {
5219
5265
  return eachEachModel.id === eachCsvList.objectId;
5220
5266
  }
5221
5267
  else {
@@ -5817,6 +5863,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
5817
5863
  setExportQR(false);
5818
5864
  setSelectedObjectId("");
5819
5865
  setSelectedObjectStructureId("");
5866
+ setObjectCellEdit(null);
5820
5867
  setSelectedListAddress({ lat: 0, lng: 0, name: "" });
5821
5868
  setSelectedListAddressId("");
5822
5869
  setSelectedListAddressIndex(-1);
@@ -5966,21 +6013,76 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
5966
6013
  //=====================================================================================
5967
6014
  //SECTION: Render CRUD
5968
6015
  //=====================================================================================
6016
+ // INFO: columns the end user is allowed to toggle via organise.hideColumnEnabled.
6017
+ // Developer-hidden columns (DataStructure.hide) are excluded on purpose —
6018
+ // a developer hiding a column is not a preference the user may override — as
6019
+ // are the id fields and anything that never becomes a column anyway.
6020
+ var getTogglableColumns = function () {
6021
+ return structure.filter(function (eachAttribute) {
6022
+ var _a;
6023
+ if (eachAttribute.id === "_id" ||
6024
+ eachAttribute.id === "id" ||
6025
+ eachAttribute.id === "baseDraft" ||
6026
+ eachAttribute.hide ||
6027
+ utils_1.NON_TABLE_COLUMN_DATA_TYPES.includes(eachAttribute.type)) {
6028
+ return false;
6029
+ }
6030
+ if (!((_a = props.organise) === null || _a === void 0 ? void 0 : _a.showBaseUpdatedAt) &&
6031
+ eachAttribute.id === "baseUpdatedAt") {
6032
+ return false;
6033
+ }
6034
+ return true;
6035
+ });
6036
+ };
6037
+ // INFO: user hides are only honoured while the feature is switched on, so
6038
+ // turning the prop off restores every column without clearing stored state.
6039
+ var getActiveUserHiddenColumnIds = function () {
6040
+ var _a;
6041
+ if (schemaPresent || !((_a = props.organise) === null || _a === void 0 ? void 0 : _a.hideColumnEnabled))
6042
+ return [];
6043
+ return userHiddenColumnIds;
6044
+ };
6045
+ // INFO: counted off the togglable list rather than the raw array so ids left
6046
+ // over from an older schema can never inflate the badge.
6047
+ var getUserHiddenColumnCount = function () {
6048
+ var activeUserHiddenColumnIds = getActiveUserHiddenColumnIds();
6049
+ return getTogglableColumns().filter(function (eachColumn) {
6050
+ return activeUserHiddenColumnIds.includes(eachColumn.id);
6051
+ }).length;
6052
+ };
6053
+ var renderHideColumnPopupContent = function () {
6054
+ var activeUserHiddenColumnIds = getActiveUserHiddenColumnIds();
6055
+ var togglableColumns = getTogglableColumns();
6056
+ var visibleCount = togglableColumns.filter(function (eachColumn) { return !activeUserHiddenColumnIds.includes(eachColumn.id); }).length;
6057
+ return (react_1.default.createElement("div", { className: "shadow-lg bg-white rounded-md p-4 flex flex-col w-[calc(100vw-2rem)] max-w-[280px]" },
6058
+ react_1.default.createElement("div", { className: "flex flex-row items-center" },
6059
+ react_1.default.createElement("p", { className: "text-sm font-medium text-gray-700" }, "Columns"),
6060
+ react_1.default.createElement("div", { className: "grow" }),
6061
+ activeUserHiddenColumnIds.length > 0 && (react_1.default.createElement(textButton_1.TextButton, { text: "Show all", onClick: handleShowAllUserHiddenColumns }))),
6062
+ react_1.default.createElement("div", { className: "flex flex-col mt-2 overflow-y-auto max-h-72" }, togglableColumns.map(function (eachColumn) {
6063
+ var isHidden = activeUserHiddenColumnIds.includes(eachColumn.id);
6064
+ // INFO: an empty table header breaks both table renderers, so the
6065
+ // last visible column stays locked until another one is shown.
6066
+ var isLocked = !isHidden && visibleCount <= 1;
6067
+ return (react_1.default.createElement("button", { key: eachColumn.id, type: "button", disabled: isLocked, "aria-pressed": !isHidden, "data-testid": "dtw-hide-column-".concat(eachColumn.id), className: "flex flex-row items-center py-2 text-sm text-left ".concat(isLocked
6068
+ ? "opacity-50 cursor-not-allowed"
6069
+ : "cursor-pointer hover:text-primary-600"), onClick: function () {
6070
+ handleToggleUserHiddenColumn(eachColumn.id);
6071
+ } },
6072
+ react_1.default.createElement("span", { className: "pr-3 truncate grow" }, eachColumn.name),
6073
+ isHidden ? (react_1.default.createElement(outline_1.EyeSlashIcon, { className: "w-4 h-4 text-gray-400 shrink-0" })) : (react_1.default.createElement(outline_1.EyeIcon, { className: "w-4 h-4 text-primary-600 shrink-0" }))));
6074
+ }))));
6075
+ };
5969
6076
  var renderTableHeader = function () {
5970
6077
  var _a, _b;
5971
6078
  var tableHeader = [];
6079
+ var activeUserHiddenColumnIds = getActiveUserHiddenColumnIds();
5972
6080
  structure.map(function (eachAttribute) {
5973
6081
  var _a;
5974
6082
  if (eachAttribute.id === "baseDraft" ||
5975
- eachAttribute.type === "listObject" ||
5976
- eachAttribute.type === "listAddress" ||
5977
- eachAttribute.type === "file" ||
5978
- eachAttribute.type === "multipleFile" ||
5979
- eachAttribute.type === "markdown" ||
5980
- eachAttribute.type === "signature" ||
5981
- eachAttribute.type === "ganttchart" ||
5982
- eachAttribute.type === "canvas" ||
5983
- eachAttribute.hide) {
6083
+ utils_1.NON_TABLE_COLUMN_DATA_TYPES.includes(eachAttribute.type) ||
6084
+ eachAttribute.hide ||
6085
+ activeUserHiddenColumnIds.includes(eachAttribute.id)) {
5984
6086
  return null;
5985
6087
  }
5986
6088
  if (!((_a = props.organise) === null || _a === void 0 ? void 0 : _a.showBaseUpdatedAt) &&
@@ -6034,14 +6136,8 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
6034
6136
  };
6035
6137
  var renderDetailListData = function (model) {
6036
6138
  var detailList = [];
6037
- var exludedDataTypes = [
6038
- "listObject",
6039
- "listAddress",
6040
- "ganttchart",
6041
- "canvas",
6042
- ];
6043
6139
  model
6044
- .filter(function (eachAttribute) { return !exludedDataTypes.includes(eachAttribute.type); })
6140
+ .filter(function (eachAttribute) { return !utils_1.NON_DETAIL_LIST_DATA_TYPES.includes(eachAttribute.type); })
6045
6141
  .map(function (eachAttribute) {
6046
6142
  var _a, _b, _c, _d, _e, _f;
6047
6143
  var selectedDataKey = Object.keys(selectedData).find(function (eachKey) { return eachKey === eachAttribute.id; });
@@ -6306,7 +6402,10 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
6306
6402
  });
6307
6403
  return canvasElement;
6308
6404
  };
6309
- var renderActionButtons = function (type, isBottom, hasTabAlign, uniqueTabIds) {
6405
+ // INFO: placement is decided by the caller (see isBottom in renderContent), so this only
6406
+ // builds the buttons. It previously took an isBottom argument purely to add a top margin
6407
+ // to the list's create button when that button was pushed below the table.
6408
+ var renderActionButtons = function (type, hasTabAlign, uniqueTabIds) {
6310
6409
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
6311
6410
  var bareActionComponent = (_c = (_b = (_a = props.bareSettings) === null || _a === void 0 ? void 0 : _a.bareUpdateActionComponent) === null || _b === void 0 ? void 0 : _b.call(_a, selectedData, formRef)) !== null && _c !== void 0 ? _c : undefined;
6312
6411
  if (type === "read") {
@@ -6404,11 +6503,11 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
6404
6503
  hasNavigation ? (react_1.default.createElement(iconButton_1.IconButton, { testId: "dtw-create", icon: react_1.default.createElement(outline_1.PlusIcon, { className: "h-7 w-7 text-white" }), background: "bg-primary-500 hover:bg-primary-600", onClick: function () {
6405
6504
  var _a, _b;
6406
6505
  (_b = (_a = props.organise) === null || _a === void 0 ? void 0 : _a.handleNavigate) === null || _b === void 0 ? void 0 : _b.call(_a, "update", "new");
6407
- }, className: isBottom ? "mt-5" : "" })) : (react_1.default.createElement(link_1.Link, { href: "".concat(props.localURLEndpoint, "?data=new&type=update&collection=").concat(props.collectionId), linkType: props.linkType, custom: props.custom },
6408
- react_1.default.createElement(iconButton_1.IconButton, { testId: "dtw-create", icon: react_1.default.createElement(outline_1.PlusIcon, { className: "h-7 w-7 text-white" }), background: "bg-primary-500 hover:bg-primary-600", className: isBottom ? "mt-5" : "" }))),
6506
+ } })) : (react_1.default.createElement(link_1.Link, { href: "".concat(props.localURLEndpoint, "?data=new&type=update&collection=").concat(props.collectionId), linkType: props.linkType, custom: props.custom },
6507
+ react_1.default.createElement(iconButton_1.IconButton, { testId: "dtw-create", icon: react_1.default.createElement(outline_1.PlusIcon, { className: "h-7 w-7 text-white" }), background: "bg-primary-500 hover:bg-primary-600" }))),
6409
6508
  offlineDataLength > 0 && (react_1.default.createElement(iconButton_1.IconButton, { icon: react_1.default.createElement(solid_1.CloudArrowUpIcon, { className: "h-7 w-7 text-white" }), background: "bg-primary-500 hover:bg-primary-600", onClick: function () {
6410
6509
  handlePopUpModal(true, "offline");
6411
- }, className: isBottom ? "mt-5" : "" }))));
6510
+ } }))));
6412
6511
  }
6413
6512
  if (listActionBtns.length > 0) {
6414
6513
  return react_1.default.createElement(react_1.default.Fragment, null, listActionBtns);
@@ -6544,6 +6643,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
6544
6643
  switch (props.type) {
6545
6644
  case "read":
6546
6645
  var anyAuthMethod = Object.values(authMethods).some(function (value) { return value; });
6646
+ var hasReadHeading = !!(props.title || props.description);
6547
6647
  pages.push({
6548
6648
  name: (_d = selectedData === null || selectedData === void 0 ? void 0 : selectedData[(_c = (_b = props.organise) === null || _b === void 0 ? void 0 : _b.breadcrumbAttributeId) !== null && _c !== void 0 ? _c : serverId]) !== null && _d !== void 0 ? _d : (props.id ? props.id : "new"),
6549
6649
  href: "#",
@@ -6565,8 +6665,8 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
6565
6665
  !loading && (react_1.default.createElement(react_1.default.Fragment, null,
6566
6666
  renderBreadcrumb(pages),
6567
6667
  react_1.default.createElement("div", null,
6568
- react_1.default.createElement("div", { className: "flex flex-col justify-between sm:py-2 sm:items-center sm:flex-row" },
6569
- (props.title || props.description) && (react_1.default.createElement("div", { className: "flex flex-col" },
6668
+ react_1.default.createElement("div", { className: "flex flex-col sm:py-2 sm:items-center sm:flex-row ".concat(hasReadHeading ? "justify-between" : "sm:justify-end") },
6669
+ hasReadHeading && (react_1.default.createElement("div", { className: "flex flex-col" },
6570
6670
  props.title && (react_1.default.createElement("p", { className: "text-xl font-medium" }, props.title)),
6571
6671
  props.description && (react_1.default.createElement("span", { className: "text-sm text-gray-500" }, props.description)))),
6572
6672
  !isBottom && renderActionButtons(props.type))),
@@ -6578,7 +6678,9 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
6578
6678
  !((_l = props.bareSettings) === null || _l === void 0 ? void 0 : _l.bareReadComponentHide) && (react_1.default.createElement("div", null, renderTabContent(tabs, props.type, viewType))),
6579
6679
  ((_m = props.bareSettings) === null || _m === void 0 ? void 0 : _m.bareReadComponentPos) !== "top" &&
6580
6680
  renderBareReadComp()),
6581
- isBottom && renderActionButtons(props.type, true)))));
6681
+ isBottom && (
6682
+ // INFO: matches the update view's bottom bar, which is already sm:justify-end
6683
+ react_1.default.createElement("div", { className: "flex sm:justify-end" }, renderActionButtons(props.type)))))));
6582
6684
  case "update":
6583
6685
  if (props.id !== "new") {
6584
6686
  pages.push({
@@ -6598,8 +6700,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
6598
6700
  var _a;
6599
6701
  var present = false;
6600
6702
  if (eachModel.type === "markdown" ||
6601
- eachModel.type === "object" ||
6602
- eachModel.type === "listObject" ||
6703
+ utils_1.OBJECT_DATA_TYPES.includes(eachModel.type) ||
6603
6704
  eachModel.type === "textArea") {
6604
6705
  disabledOnEnter_1 = true;
6605
6706
  }
@@ -6760,7 +6861,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
6760
6861
  props.title && (react_1.default.createElement("p", { className: "text-xl font-medium" }, props.title)),
6761
6862
  props.description && (react_1.default.createElement("span", { className: "text-sm text-gray-500" }, props.description)))),
6762
6863
  !isBottom &&
6763
- renderActionButtons(props.type, false, hasTabAlign_1, uniqueTabIds_2)),
6864
+ renderActionButtons(props.type, hasTabAlign_1, uniqueTabIds_2)),
6764
6865
  hasTabAlign_1 ? (react_1.default.createElement("div", { className: "w-full ".concat(leftTabAlign
6765
6866
  ? "grid sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-5"
6766
6867
  : "") },
@@ -6800,7 +6901,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
6800
6901
  react_1.default.createElement("div", { className: "mt-8" }, renderListAddress(props.type)),
6801
6902
  react_1.default.createElement("div", { className: "mt-8" }, renderListObject(props.type)),
6802
6903
  isBottom &&
6803
- renderActionButtons(props.type, true, hasTabAlign_1, uniqueTabIds_2)))) : (react_1.default.createElement("div", null,
6904
+ renderActionButtons(props.type, hasTabAlign_1, uniqueTabIds_2)))) : (react_1.default.createElement("div", null,
6804
6905
  ((_13 = props.bareSettings) === null || _13 === void 0 ? void 0 : _13.bareUpdateComponentAbove) &&
6805
6906
  ((_14 = props.bareSettings) === null || _14 === void 0 ? void 0 : _14.bareUpdateComponent) &&
6806
6907
  ((_15 = props.bareSettings) === null || _15 === void 0 ? void 0 : _15.bareUpdateComponent(selectedData)),
@@ -6812,7 +6913,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
6812
6913
  react_1.default.createElement("div", { className: "mt-8" }, renderListAddress(props.type)),
6813
6914
  react_1.default.createElement("div", { className: "mt-8" }, renderListObject(props.type)),
6814
6915
  isBottom &&
6815
- renderActionButtons(props.type, true, hasTabAlign_1, uniqueTabIds_2)))));
6916
+ renderActionButtons(props.type, hasTabAlign_1, uniqueTabIds_2)))));
6816
6917
  case "list":
6817
6918
  case "union":
6818
6919
  var filterComponent_1 = renderSearchContent();
@@ -6881,7 +6982,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
6881
6982
  return null;
6882
6983
  };
6883
6984
  var renderListActionElements = function () {
6884
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
6985
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
6885
6986
  var actionElementList = [];
6886
6987
  if (schemaPresent) {
6887
6988
  actionElementList.push(react_1.default.createElement(react_1.default.Fragment, null,
@@ -6915,8 +7016,19 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
6915
7016
  actionElementList.push(react_1.default.createElement(popUp_1.PopUp, { ctaComp: react_1.default.createElement(iconButton_1.IconButton, { icon: react_1.default.createElement(outline_1.FunnelIcon, { className: "h-7 w-7 text-primary-500" }), bgColor: "bg-white" }), renderComp: react_1.default.createElement("div", { className: "shadow-lg p-4 flex flex-col space-y-3 w-[calc(100vw-2rem)] max-w-[320px]" }, popupFilters.map(function (filterEl, index) { return (react_1.default.createElement("div", { key: index }, filterEl)); })), anchor: "right", excludePortalIds: ["datepicker-portal"], lib: { Transition: (_f = props === null || props === void 0 ? void 0 : props.lib) === null || _f === void 0 ? void 0 : _f.Transition } }));
6916
7017
  }
6917
7018
  }
7019
+ // INFO: User column hiding — the schemaPresent path already exposes
7020
+ // OverviewModal, which writes hide back to the schema in the database.
7021
+ // This one is the client-only counterpart for bare DTWs.
7022
+ if (!schemaPresent && ((_g = props.organise) === null || _g === void 0 ? void 0 : _g.hideColumnEnabled)) {
7023
+ var hiddenColumnCount = getUserHiddenColumnCount();
7024
+ actionElementList.push(react_1.default.createElement(popUp_1.PopUp, { ctaComp: react_1.default.createElement("div", { className: "relative w-fit h-fit" },
7025
+ hiddenColumnCount > 0 && (react_1.default.createElement("div", { "data-testid": "dtw-hide-columns-count", className: "absolute top-0 right-0 translate-x-1/4 -translate-y-1/4 z-[1] rounded-full bg-primary-500 text-white flex items-center justify-center w-5 h-5 text-[10px]" }, hiddenColumnCount)),
7026
+ react_1.default.createElement(iconButton_1.IconButton, { testId: "dtw-hide-columns-btn", icon: react_1.default.createElement(outline_1.EyeSlashIcon, { className: "h-7 w-7 ".concat(hiddenColumnCount > 0
7027
+ ? "text-white"
7028
+ : "text-primary-500") }), bgColor: hiddenColumnCount > 0 ? "bg-primary-500" : "bg-white" })), renderComp: renderHideColumnPopupContent(), anchor: "right", lib: { Transition: (_h = props === null || props === void 0 ? void 0 : props.lib) === null || _h === void 0 ? void 0 : _h.Transition } }));
7029
+ }
6918
7030
  // INFO: Flex filter — desktop uses PopUp, mobile uses Modal
6919
- if ((_g = props.bareSettings) === null || _g === void 0 ? void 0 : _g.bareFlexFilters) {
7031
+ if ((_j = props.bareSettings) === null || _j === void 0 ? void 0 : _j.bareFlexFilters) {
6920
7032
  var flexActions = {
6921
7033
  handleAddFilter: handleFlexFilterAdd,
6922
7034
  handleRemoveFilter: handleFlexFilterRemove,
@@ -6929,16 +7041,16 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
6929
7041
  };
6930
7042
  // INFO: Search input will only render above flex filters if bareListFilterAsPopup is true
6931
7043
  var searchInput = !isFirebase &&
6932
- ((_h = props.bareSettings) === null || _h === void 0 ? void 0 : _h.bareListFilterAsPopup) &&
6933
- !((_j = props.organise) === null || _j === void 0 ? void 0 : _j.hideSearch) &&
7044
+ ((_k = props.bareSettings) === null || _k === void 0 ? void 0 : _k.bareListFilterAsPopup) &&
7045
+ !((_l = props.organise) === null || _l === void 0 ? void 0 : _l.hideSearch) &&
6934
7046
  filterComponent_1 &&
6935
7047
  Array.isArray(filterComponent_1) &&
6936
7048
  filterComponent_1.length > 0
6937
7049
  ? filterComponent_1[filterComponent_1.length - 1]
6938
7050
  : undefined;
6939
7051
  var flexFilterLength_1 = activeFlexFilterCount_1;
6940
- if (!((_k = props.organise) === null || _k === void 0 ? void 0 : _k.hideSearch) &&
6941
- ((_l = props.bareSettings) === null || _l === void 0 ? void 0 : _l.bareListFilterAsPopup) &&
7052
+ if (!((_m = props.organise) === null || _m === void 0 ? void 0 : _m.hideSearch) &&
7053
+ ((_o = props.bareSettings) === null || _o === void 0 ? void 0 : _o.bareListFilterAsPopup) &&
6942
7054
  (filterSearchParams === null || filterSearchParams === void 0 ? void 0 : filterSearchParams["search"]))
6943
7055
  flexFilterLength_1 += 1;
6944
7056
  var flexFilterIconBtn = function (mobile) {
@@ -6948,26 +7060,27 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
6948
7060
  };
6949
7061
  // INFO: Desktop — PopUp (hidden on mobile)
6950
7062
  actionElementList.push(react_1.default.createElement("div", { className: "hidden md:block" },
6951
- react_1.default.createElement(popUp_1.PopUp, { ctaComp: flexFilterIconBtn(), renderComp: (0, flexFilter_1.renderFlexFilterPopupContent)(flexFilters, structure, devSettings, dbModule, flexFilterReferenceOptions, flexFilterReferenceSearch, flexActions, (_m = props.bareSettings) === null || _m === void 0 ? void 0 : _m.bareListFilterQuery, searchInput, (_o = props.bareSettings) === null || _o === void 0 ? void 0 : _o.bareListFilterAddComponent), anchor: "right", excludePortalIds: ["datepicker-portal", "select-portal"], lib: { Transition: (_p = props === null || props === void 0 ? void 0 : props.lib) === null || _p === void 0 ? void 0 : _p.Transition } })));
7063
+ react_1.default.createElement(popUp_1.PopUp, { ctaComp: flexFilterIconBtn(), renderComp: (0, flexFilter_1.renderFlexFilterPopupContent)(flexFilters, structure, devSettings, dbModule, flexFilterReferenceOptions, flexFilterReferenceSearch, flexActions, (_p = props.bareSettings) === null || _p === void 0 ? void 0 : _p.bareListFilterQuery, searchInput, (_q = props.bareSettings) === null || _q === void 0 ? void 0 : _q.bareListFilterAddComponent), anchor: "right", excludePortalIds: ["datepicker-portal", "select-portal"], lib: { Transition: (_r = props === null || props === void 0 ? void 0 : props.lib) === null || _r === void 0 ? void 0 : _r.Transition } })));
6952
7064
  // INFO: Mobile — IconButton that opens a Modal (hidden on desktop)
6953
7065
  actionElementList.push(react_1.default.createElement("div", { className: "block md:hidden" },
6954
- !((_q = props.bareSettings) === null || _q === void 0 ? void 0 : _q.bareListMobileFloatingSearch) &&
7066
+ !((_s = props.bareSettings) === null || _s === void 0 ? void 0 : _s.bareListMobileFloatingSearch) &&
6955
7067
  flexFilterIconBtn(true),
6956
- (0, flexFilter_1.renderFlexFilterModal)(flexFilterModalOpen, flexFilters, structure, devSettings, dbModule, flexFilterReferenceOptions, flexFilterReferenceSearch, flexActions, function () { return setFlexFilterModalOpen(false); }, (_r = props.bareSettings) === null || _r === void 0 ? void 0 : _r.bareListFilterQuery, searchInput, (_s = props.bareSettings) === null || _s === void 0 ? void 0 : _s.bareListFilterAddComponent)));
6957
- }
6958
- if (!isBottom) {
6959
- var actionBtns = renderActionButtons(props.type);
6960
- if (actionBtns)
6961
- actionElementList.push(actionBtns);
7068
+ (0, flexFilter_1.renderFlexFilterModal)(flexFilterModalOpen, flexFilters, structure, devSettings, dbModule, flexFilterReferenceOptions, flexFilterReferenceSearch, flexActions, function () { return setFlexFilterModalOpen(false); }, (_t = props.bareSettings) === null || _t === void 0 ? void 0 : _t.bareListFilterQuery, searchInput, (_u = props.bareSettings) === null || _u === void 0 ? void 0 : _u.bareListFilterAddComponent)));
6962
7069
  }
6963
- if (schemaPresent || ((_t = props.organise) === null || _t === void 0 ? void 0 : _t.showExport)) {
7070
+ // INFO: bareUpdateActionBottom positions the read/update action bar. The list's own
7071
+ // create and offline-upload buttons stay in the filter row either way — they belong
7072
+ // with the controls they sit beside, not stranded below the table and pagination.
7073
+ var actionBtns = renderActionButtons(props.type);
7074
+ if (actionBtns)
7075
+ actionElementList.push(actionBtns);
7076
+ if (schemaPresent || ((_v = props.organise) === null || _v === void 0 ? void 0 : _v.showExport)) {
6964
7077
  actionElementList.push(react_1.default.createElement(popUp_1.PopUp, { ctaComp: react_1.default.createElement(iconButton_1.IconButton, { className: "bg-primary-100", icon: react_1.default.createElement(solid_1.EllipsisVerticalIcon, { className: "h-7 w-7 text-primary-500" }), bgColor: "bg-white" }), renderComp: react_1.default.createElement("div", { className: "shadow-lg" }, moreButtonPopUp.map(function (eachPopup) { return (
6965
7078
  //TODO: Bug - Crash on Next Js
6966
7079
  // <Menu.Item>
6967
7080
  react_1.default.createElement("span", { className: "block w-40 py-3 text-sm text-center text-gray-700 cursor-pointer hover:bg-gray-100", onClick: eachPopup === null || eachPopup === void 0 ? void 0 : eachPopup.onClick }, eachPopup === null || eachPopup === void 0 ? void 0 : eachPopup.text)
6968
7081
  // </Menu.Item>
6969
7082
  ); })), lib: {
6970
- Transition: (_u = props === null || props === void 0 ? void 0 : props.lib) === null || _u === void 0 ? void 0 : _u.Transition,
7083
+ Transition: (_w = props === null || props === void 0 ? void 0 : props.lib) === null || _w === void 0 ? void 0 : _w.Transition,
6971
7084
  } }));
6972
7085
  }
6973
7086
  if (actionElementList.length > 0) {
@@ -7033,7 +7146,6 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
7033
7146
  renderListNewRowFilterElements(),
7034
7147
  (schemaPresent || ((_28 = props.bareSettings) === null || _28 === void 0 ? void 0 : _28.bareReadListTabs)) && (react_1.default.createElement(tabs_1.Tabs, { tabs: tabs, selectedId: viewType, linkType: props.linkType, custom: props.custom, onClick: function (id) { return handleSelectTab(id); }, darkMode: (_29 = props.organise) === null || _29 === void 0 ? void 0 : _29.darkMode })),
7035
7148
  renderTabContent(tabs, props.type, viewType),
7036
- isBottom && renderActionButtons(props.type, true),
7037
7149
  ((_30 = props.bareSettings) === null || _30 === void 0 ? void 0 : _30.bareListMobileFloatingSearch) &&
7038
7150
  (0, listModule_1.renderFloatingMobileSearch)({
7039
7151
  filterSearch: filterSearch,
@@ -7123,7 +7235,11 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
7123
7235
  var isKanban = (selectedTab === null || selectedTab === void 0 ? void 0 : selectedTab.viewType) === "kanban";
7124
7236
  var isListEditable = (_a = props.edit) === null || _a === void 0 ? void 0 : _a.listEditable;
7125
7237
  var disableUpdate = (_b = props.edit) === null || _b === void 0 ? void 0 : _b.disabledUpdate;
7238
+ var activeUserHiddenColumnIds = getActiveUserHiddenColumnIds();
7126
7239
  var titleKey = "";
7240
+ // INFO: titleModel ignores user hides so the card title stays stable
7241
+ // regardless of which columns the user chose to hide — shifting the title
7242
+ // when hiding the first column would be confusing in grid/kanban views.
7127
7243
  var titleModel = structure.find(function (eachModel) {
7128
7244
  return !eachModel.hide && eachModel.id !== "_id" && eachModel.id !== "id";
7129
7245
  });
@@ -7161,13 +7277,13 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
7161
7277
  eachKey === "baseDraft" ||
7162
7278
  eachKey === "update" ||
7163
7279
  !selectedModel ||
7164
- selectedModel.type === "object" ||
7165
- selectedModel.type === "listObject" ||
7280
+ utils_1.OBJECT_DATA_TYPES.includes(selectedModel.type) ||
7166
7281
  selectedModel.type === "file" ||
7167
7282
  selectedModel.type === "multipleFile" ||
7168
7283
  selectedModel.type === "ganttchart" ||
7169
7284
  selectedModel.type === "canvas" ||
7170
7285
  selectedModel.hide ||
7286
+ activeUserHiddenColumnIds.includes(eachKey) ||
7171
7287
  eachKey === imageTag ||
7172
7288
  eachValue === title ||
7173
7289
  (structurePresent && (!modelInStructure || modelInStructure.hide))) {
@@ -7520,7 +7636,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
7520
7636
  }
7521
7637
  });
7522
7638
  }); },
7523
- }, addable: {
7639
+ }, onObjectEdit: handleObjectCellEdit, addable: {
7524
7640
  active: ((_2 = props.edit) === null || _2 === void 0 ? void 0 : _2.listAddable) ? true : false,
7525
7641
  onAddData: function (data) { return __awaiter(void 0, void 0, void 0, function () {
7526
7642
  return __generator(this, function (_a) {
@@ -7629,7 +7745,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
7629
7745
  }
7630
7746
  });
7631
7747
  }); },
7632
- }, addable: {
7748
+ }, onObjectEdit: handleObjectCellEdit, addable: {
7633
7749
  active: ((_2 = props.edit) === null || _2 === void 0 ? void 0 : _2.listAddable) ? true : false,
7634
7750
  onAddData: function (data) { return __awaiter(void 0, void 0, void 0, function () {
7635
7751
  return __generator(this, function (_a) {
@@ -7712,7 +7828,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
7712
7828
  }
7713
7829
  });
7714
7830
  }); },
7715
- }, addable: {
7831
+ }, onObjectEdit: handleObjectCellEdit, addable: {
7716
7832
  active: ((_31 = props.edit) === null || _31 === void 0 ? void 0 : _31.listAddable) ? true : false,
7717
7833
  onAddData: function (data) { return __awaiter(void 0, void 0, void 0, function () {
7718
7834
  return __generator(this, function (_a) {
@@ -8529,7 +8645,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
8529
8645
  }, delayInit: true })),
8530
8646
  react_1.default.createElement("div", { className: "flex justify-end pt-8" },
8531
8647
  selectedObjectId && props.type !== "read" && (react_1.default.createElement(button_1.Button, { className: "mr-5", text: "Delete", type: "danger", onClick: function () { } })),
8532
- react_1.default.createElement(button_1.Button, { text: "".concat(props.type === "read" ? "Close" : "Submit"), type: "normal", onClick: function () { return __awaiter(void 0, void 0, void 0, function () {
8648
+ react_1.default.createElement(button_1.Button, { text: "".concat(props.type === "read" && !objectCellEdit ? "Close" : "Submit"), type: "normal", onClick: function () { return __awaiter(void 0, void 0, void 0, function () {
8533
8649
  var _a;
8534
8650
  return __generator(this, function (_b) {
8535
8651
  switch (_b.label) {
@@ -8644,7 +8760,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
8644
8760
  return __generator(this, function (_b) {
8645
8761
  switch (_b.label) {
8646
8762
  case 0:
8647
- if (!(props.type === "update")) return [3 /*break*/, 2];
8763
+ if (!(props.type === "update" || objectCellEdit)) return [3 /*break*/, 2];
8648
8764
  return [4 /*yield*/, ((_a = objectFormRef.current) === null || _a === void 0 ? void 0 : _a.handleSubmit())];
8649
8765
  case 1:
8650
8766
  _b.sent();
@@ -8846,7 +8962,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
8846
8962
  };
8847
8963
  return (react_1.default.createElement(react_1.default.Fragment, null,
8848
8964
  renderNotification("root"),
8849
- ((_48 = (_47 = props.renderSettings) === null || _47 === void 0 ? void 0 : _47.renderLoadingUI) === null || _48 === void 0 ? void 0 : _48.call(_47)) && loading ? ((_49 = props.renderSettings) === null || _49 === void 0 ? void 0 : _49.renderLoadingUI()) : (react_1.default.createElement(modal_1.Modal, { maxWidth: selectedObjectStructureId || excelModal ? "2xl" : undefined, open: modalVisible, title: renderModalTitle(), renderContent: renderModalContent, onClose: function () {
8965
+ ((_49 = (_48 = props.renderSettings) === null || _48 === void 0 ? void 0 : _48.renderLoadingUI) === null || _49 === void 0 ? void 0 : _49.call(_48)) && loading ? ((_50 = props.renderSettings) === null || _50 === void 0 ? void 0 : _50.renderLoadingUI()) : (react_1.default.createElement(modal_1.Modal, { maxWidth: selectedObjectStructureId || excelModal ? "2xl" : undefined, open: modalVisible, title: renderModalTitle(), renderContent: renderModalContent, onClose: function () {
8850
8966
  var _a, _b;
8851
8967
  if (loading)
8852
8968
  return;