@wavemaker/react-runtime 11.14.2-rc.6311 → 11.14.4-rc.647538

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 (73) hide show
  1. package/actions/navigation-action.js +3 -5
  2. package/actions/notification-action.js +3 -6
  3. package/components/basic/anchor/index.js +7 -6
  4. package/components/basic/label/index.js +2 -2
  5. package/components/basic/search/index.js +3 -7
  6. package/components/chart/components/barColumnChart/index.js +4 -2
  7. package/components/chart/components/pieDonutChart/index.js +1 -3
  8. package/components/chart/index.js +39 -72
  9. package/components/chart/utils.js +12 -23
  10. package/components/container/index.js +7 -6
  11. package/components/container/panel/components/panel-header/index.js +2 -3
  12. package/components/container/panel/index.js +9 -13
  13. package/components/container/tabs/index.js +0 -1
  14. package/components/container/tabs/tab-pane/index.js +3 -39
  15. package/components/container/wizard/index.js +57 -187
  16. package/components/container/wizard/utils.js +1 -1
  17. package/components/container/wizard/wizard-action/index.js +4 -9
  18. package/components/container/wizard/wizard-step/index.js +8 -21
  19. package/components/data/form/base-form/index.js +11 -51
  20. package/components/data/form/form-controller/withFormController.js +10 -7
  21. package/components/data/list/components/GroupedListItems.js +1 -5
  22. package/components/data/list/components/ListItemWithTemplate.js +1 -4
  23. package/components/data/list/hooks/useListEffects.js +14 -34
  24. package/components/data/list/hooks/useListEventHandlers.js +2 -18
  25. package/components/data/list/hooks/useListState.js +2 -15
  26. package/components/data/list/index.js +0 -1
  27. package/components/data/list/utils/list-helpers.js +5 -3
  28. package/components/data/list/utils/list-widget-methods.js +1 -1
  29. package/components/data/live-filter/index.js +5 -6
  30. package/components/data/live-form/index.js +14 -24
  31. package/components/data/table/components/TableBody.js +21 -5
  32. package/components/data/table/components/TableHeader.js +1 -5
  33. package/components/data/table/index.js +5 -21
  34. package/components/data/utils/field-data-utils.js +1 -1
  35. package/components/dialogs/index.js +16 -14
  36. package/components/input/currency/index.js +7 -11
  37. package/components/input/default/checkbox/index.js +3 -2
  38. package/components/input/default/checkboxset/index.js +22 -2
  39. package/components/input/default/radioset/index.js +4 -5
  40. package/components/input/epoch/datetime/index.js +2 -6
  41. package/components/input/epoch/time/index.js +1 -2
  42. package/components/input/number/index.js +2 -2
  43. package/components/input/text/util.js +0 -2
  44. package/components/input/textarea/index.js +24 -22
  45. package/components/layout/leftnav/index.js +1 -1
  46. package/components/navbar/nav/index.js +7 -97
  47. package/components/navbar/nav-item/index.js +2 -5
  48. package/components/navigation/menu/index.js +12 -73
  49. package/components/navigation/popover/index.js +0 -2
  50. package/components/page/error-boundary/index.js +0 -1
  51. package/components/prefab/container/index.js +3 -10
  52. package/context/LocalizationProvider.js +0 -1
  53. package/context/PrefabContext.js +13 -138
  54. package/context/WidgetProvider.js +2 -2
  55. package/core/constants/events.js +6 -12
  56. package/core/constants/index.js +11 -6
  57. package/core/formatter/number-formatters.js +1 -1
  58. package/core/proxy-service.js +36 -72
  59. package/core/util/utils.js +4 -23
  60. package/higherOrder/BaseApp.js +18 -60
  61. package/higherOrder/BasePage.js +77 -99
  62. package/higherOrder/BasePrefab.js +5 -13
  63. package/higherOrder/withBaseWrapper.js +3 -3
  64. package/hooks/useDataSourceSubscription.js +1 -1
  65. package/hooks/useHttp.js +13 -20
  66. package/mui-config/theme.js +0 -3
  67. package/package-lock.json +1115 -1013
  68. package/package.json +3 -3
  69. package/store/index.js +1 -5
  70. package/variables/service-variable.js +14 -17
  71. package/components/chart/hooks/useBarYAxisExtras.js +0 -52
  72. package/components/chart/hooks/useXAxisConfig.js +0 -98
  73. package/utils/lib-error-skipper.js +0 -196
@@ -14,6 +14,7 @@ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
14
14
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
15
  var _reactHookForm = require("react-hook-form");
16
16
  var _clsx = _interopRequireDefault(require("clsx"));
17
+ var _Box = _interopRequireDefault(require("@mui/material/Box"));
17
18
  var _validationContrustor = require("@wavemaker/react-runtime/components/data/form/form-controller/validation-contrustor");
18
19
  var _WidgetProvider = require("@wavemaker/react-runtime/context/WidgetProvider");
19
20
  var _formContext = require("@wavemaker/react-runtime/components/data/form/form-context");
@@ -200,7 +201,7 @@ var withFormController = function withFormController(WrappedComponent) {
200
201
  }
201
202
 
202
203
  // If the incoming value is an object and we have a datafield, extract the value
203
- if (valueToSet && (0, _typeof2["default"])(valueToSet) === "object" && !Array.isArray(valueToSet) && props.datafield && props.datafield !== "All Fields") {
204
+ if (valueToSet && (0, _typeof2["default"])(valueToSet) === "object" && !Array.isArray(valueToSet) && props.datafield) {
204
205
  valueToSet = valueToSet[props.datafield];
205
206
  }
206
207
  if (type === "number") {
@@ -266,9 +267,9 @@ var withFormController = function withFormController(WrappedComponent) {
266
267
  hidden: contextFormRef === null || contextFormRef === void 0 ? void 0 : contextFormRef.isViewMode
267
268
  })
268
269
  });
269
- return __jsx("div", {
270
- style: {
271
- width: "100%"
270
+ return __jsx(_Box["default"], {
271
+ sx: {
272
+ width: "inherit"
272
273
  }
273
274
  }, __jsx(WrappedComponent, (0, _extends2["default"])({}, controlledProps, {
274
275
  dataset: props.dataset,
@@ -289,7 +290,8 @@ var withFormController = function withFormController(WrappedComponent) {
289
290
  }
290
291
  }
291
292
  return value;
292
- }()), hint && !shouldShowErrorMessage(validationType, fieldState, touched) && __jsx("p", {
293
+ }()), hint && !shouldShowErrorMessage(validationType, fieldState, touched) && __jsx(_Box["default"], {
294
+ component: "p",
293
295
  className: "help-block",
294
296
  "aria-hidden": "true",
295
297
  role: "alert",
@@ -298,12 +300,13 @@ var withFormController = function withFormController(WrappedComponent) {
298
300
  textAlign: "start",
299
301
  width: "100%"
300
302
  }
301
- }, hint), shouldShowErrorMessage(validationType, fieldState, touched) && __jsx("p", {
303
+ }, hint), shouldShowErrorMessage(validationType, fieldState, touched) && __jsx(_Box["default"], {
304
+ component: "p",
302
305
  className: "help-block text-danger",
303
306
  "aria-hidden": "false",
304
307
  role: "alert",
305
308
  "aria-live": "assertive",
306
- style: {
309
+ sx: {
307
310
  textAlign: "start",
308
311
  width: "100%"
309
312
  }
@@ -50,10 +50,6 @@ var GroupedListItems = exports.GroupedListItems = function GroupedListItems(_ref
50
50
  return __jsx(_react["default"].Fragment, null, groupsToRender.map(function (groupObj) {
51
51
  var isGroupCollapsed = groupCollapsed[groupObj.key] || false;
52
52
  var displayCount = groupObj.originalDataLength || groupObj.data.length;
53
- // Build itemclass for grouped items: if function, wrap to append group class
54
- var groupedItemClass = typeof itemclass === "function" ? function (it) {
55
- return (0, _clsx["default"])(itemclass(it), "group-list-item");
56
- } : (0, _clsx["default"])(itemclass, "group-list-item");
57
53
  return __jsx("li", {
58
54
  key: "group_".concat(groupObj.key),
59
55
  className: "app-list-item-group clearfix"
@@ -84,7 +80,7 @@ var GroupedListItems = exports.GroupedListItems = function GroupedListItems(_ref
84
80
  isFirst: isFirst,
85
81
  isLast: isLast,
86
82
  disableitem: disableitem,
87
- itemclass: groupedItemClass,
83
+ itemclass: (0, _clsx["default"])(itemclass, "group-list-item"),
88
84
  itemsPerRowClass: itemsPerRowClass,
89
85
  name: "".concat(name, "_group_").concat(groupObj.key),
90
86
  tabIndex: tabIndex,
@@ -36,14 +36,11 @@ var ListItemWithTemplate = exports.ListItemWithTemplate = function ListItemWithT
36
36
  onItemMouseEnter = _ref.onItemMouseEnter,
37
37
  onItemMouseLeave = _ref.onItemMouseLeave;
38
38
  var templateContent = renderItem ? renderItem(item, globalIndex !== null && globalIndex !== void 0 ? globalIndex : index) : itemTemplate || __jsx(_mediaTemplate.MediaWmListtemplate, null);
39
-
40
- // Resolve item class: support string or function callback
41
- var resolvedItemClass = typeof itemclass === "function" ? itemclass(item) : itemclass;
42
39
  return __jsx(_ListItem.WmListItem, {
43
40
  key: itemId,
44
41
  item: item,
45
42
  disableItem: disableitem,
46
- itemClass: (0, _clsx["default"])(resolvedItemClass, itemsPerRowClass),
43
+ itemClass: (0, _clsx["default"])(itemclass, itemsPerRowClass),
47
44
  index: globalIndex !== null && globalIndex !== void 0 ? globalIndex : index,
48
45
  isFirst: isFirst,
49
46
  isLast: isLast,
@@ -52,8 +52,7 @@ var useListEffects = exports.useListEffects = function useListEffects(props) {
52
52
  var _useState = (0, _react.useState)(paginationState.currentPageSize),
53
53
  lastPageSize = _useState[0],
54
54
  setLastPageSize = _useState[1];
55
- var rafRef1 = (0, _react.useRef)(null);
56
- var rafRef2 = (0, _react.useRef)(null);
55
+
57
56
  // Effect 1: Accumulate data for On-Demand navigation
58
57
  (0, _react.useEffect)(function () {
59
58
  if (navigation === _constants.LIST_NAVIGATION_TYPES.ON_DEMAND && datasource && safeDataset.length > 0) {
@@ -106,19 +105,11 @@ var useListEffects = exports.useListEffects = function useListEffects(props) {
106
105
  getIndex: widgetMethods.getIndex,
107
106
  clear: widgetMethods.clear,
108
107
  getWidgets: widgetMethods.getWidgets,
109
- showNavigation: showNavigation
110
- });
111
- }
112
- }, []);
113
-
114
- // Effect 3: Expose methods through widget instance
115
- (0, _react.useEffect)(function () {
116
- if (listener !== null && listener !== void 0 && listener.onChange) {
117
- listener.onChange(name, {
108
+ showNavigation: showNavigation,
118
109
  selecteditem: listState.selectedItems[0]
119
110
  });
120
111
  }
121
- }, [listState.selectedItems]);
112
+ }, [widgetMethods.selectItem, widgetMethods.deselectItem, widgetMethods.getItem, widgetMethods.getIndex, widgetMethods.clear, widgetMethods.getWidgets, listState.selectedItems, listState.activeItems]);
122
113
 
123
114
  // Effect 3b: Update selected item widgets for state restoration (not selectfirstitem)
124
115
  var hasInitialWidgetUpdateRun = (0, _react.useRef)(false);
@@ -133,22 +124,18 @@ var useListEffects = exports.useListEffects = function useListEffects(props) {
133
124
  hasInitialWidgetUpdateRun.current = true;
134
125
 
135
126
  // Use double RAF to ensure DOM is fully updated
136
- rafRef1.current = requestAnimationFrame(function () {
137
- // getSelectedItemWidgets(null, listener, name);
138
- rafRef2.current = requestAnimationFrame(function () {
139
- (0, _listHelpers.getSelectedItemWidgets)(null, listener, name);
140
- });
127
+ requestAnimationFrame(function () {
128
+ (0, _listHelpers.getSelectedItemWidgets)(null, listener, name);
141
129
  });
142
- return function () {
143
- if (rafRef1.current) {
144
- cancelAnimationFrame(rafRef1.current);
145
- }
146
- if (rafRef2.current) {
147
- cancelAnimationFrame(rafRef2.current);
148
- }
149
- };
150
130
  }, [name, listState.selectedItems.length, initialRender, selectfirstitem]);
151
131
 
132
+ // Effect 4: Handle widgetInstance.selecteditem
133
+ (0, _react.useEffect)(function () {
134
+ if ((widgetInstance === null || widgetInstance === void 0 ? void 0 : widgetInstance.selecteditem) != undefined) {
135
+ widgetMethods.selectItem(widgetInstance.selecteditem);
136
+ }
137
+ }, [widgetInstance === null || widgetInstance === void 0 ? void 0 : widgetInstance.selecteditem]);
138
+
152
139
  // Effect 5: Handle selectfirstitem with onSelect
153
140
  (0, _react.useEffect)(function () {
154
141
  if (selectfirstitem && widgetInstance && onSelect && listState.selectedItems.length > 0) {
@@ -284,15 +271,8 @@ var useListEffects = exports.useListEffects = function useListEffects(props) {
284
271
  // Merge current state with existing state
285
272
  var stateToSave = stateManager.mergeWithExisting(stateManager.currentState, existingState);
286
273
 
287
- // Compare state content, not object references
288
- var existingStateStr = JSON.stringify(existingState);
289
- var stateToSaveStr = JSON.stringify(stateToSave);
290
- var statesAreEqual = existingStateStr === stateToSaveStr;
291
-
292
- // Save the state only if content has actually changed
293
- if (!statesAreEqual) {
294
- (0, _listHelpers.saveListState)(name, statehandler, stateToSave);
295
- }
274
+ // Save the state
275
+ (0, _listHelpers.saveListState)(name, statehandler, stateToSave);
296
276
  }
297
277
  }, [listState.selectedItems, paginationState.currentPage, items, name, navigation, hasBeenReordered, statehandler]);
298
278
  (0, _react.useEffect)(function () {
@@ -54,10 +54,6 @@ var useListEventHandlers = exports.useListEventHandlers = function useListEventH
54
54
  setOnDemandCurrentPage = props.setOnDemandCurrentPage,
55
55
  listener = props.listener,
56
56
  name = props.name;
57
- var selectedItemsRef = (0, _react.useRef)(selectedItems);
58
- (0, _react.useEffect)(function () {
59
- selectedItemsRef.current = selectedItems;
60
- }, [selectedItems]);
61
57
 
62
58
  // Helper function to call onSelect and mark as user-initiated
63
59
  var callOnSelect = (0, _react.useCallback)(function (selectedItem) {
@@ -65,11 +61,6 @@ var useListEventHandlers = exports.useListEventHandlers = function useListEventH
65
61
  if (userInitiatedSelectionRef) {
66
62
  userInitiatedSelectionRef.current = true;
67
63
  }
68
- if (listener !== null && listener !== void 0 && listener.onChange) {
69
- listener.onChange(name, {
70
- selecteditem: multiselect ? selectedItemsRef.current : selectedItem
71
- });
72
- }
73
64
  onSelect(widgetInstance, selectedItem);
74
65
  }
75
66
  }, [onSelect, widgetInstance, userInitiatedSelectionRef]);
@@ -96,7 +87,6 @@ var useListEventHandlers = exports.useListEventHandlers = function useListEventH
96
87
  return;
97
88
  }
98
89
  var rangeItems = (0, _lodashEs.slice)(items, start, end + 1);
99
- selectedItemsRef.current = rangeItems;
100
90
  setSelectedItems(rangeItems);
101
91
  setActiveItems(new Set(rangeItems));
102
92
  // Only call onSelect if this is a new selection (not already active)
@@ -118,14 +108,12 @@ var useListEventHandlers = exports.useListEventHandlers = function useListEventH
118
108
  var newSelectedItems = (0, _lodashEs.filter)(selectedItems, function (selectedItem) {
119
109
  return selectedItem !== item;
120
110
  });
121
- selectedItemsRef.current = newSelectedItems;
122
111
  setSelectedItems(newSelectedItems);
123
112
  var newActiveItems = new Set(activeItems);
124
113
  newActiveItems["delete"](item);
125
114
  setActiveItems(newActiveItems);
126
115
  } else {
127
116
  var _newSelectedItems = [].concat((0, _toConsumableArray2["default"])(selectedItems), [item]);
128
- selectedItemsRef.current = _newSelectedItems;
129
117
  setSelectedItems(_newSelectedItems);
130
118
  var _newActiveItems = new Set(activeItems);
131
119
  _newActiveItems.add(item);
@@ -140,9 +128,7 @@ var useListEventHandlers = exports.useListEventHandlers = function useListEventH
140
128
  // Normal click without Ctrl - select item without deselecting if already selected
141
129
  if (!isItemSelected) {
142
130
  // If clicking an unselected item, select only this item
143
- var _newSelectedItems2 = [item];
144
- selectedItemsRef.current = _newSelectedItems2;
145
- setSelectedItems(_newSelectedItems2);
131
+ setSelectedItems([item]);
146
132
  setActiveItems(new Set([item]));
147
133
  setFirstSelectedItem(item);
148
134
  // Only call onSelect if this is a new selection (not already active)
@@ -156,9 +142,7 @@ var useListEventHandlers = exports.useListEventHandlers = function useListEventH
156
142
  // Single select mode - only select, don't deselect on normal click
157
143
  if (!isItemSelected) {
158
144
  // If clicking an unselected item, select it
159
- var _newSelectedItems3 = [item];
160
- selectedItemsRef.current = _newSelectedItems3;
161
- setSelectedItems(_newSelectedItems3);
145
+ setSelectedItems([item]);
162
146
  setActiveItems(new Set([item]));
163
147
  setFirstSelectedItem(item);
164
148
  // Only call onSelect if this is a new selection (not already active)
@@ -42,8 +42,6 @@ var useListState = exports.useListState = function useListState(dataset, pagesiz
42
42
  isLoadingMore = _useState8[0],
43
43
  setIsLoadingMore = _useState8[1];
44
44
  var isInitialMount = (0, _react.useRef)(true);
45
- var rafRef1 = (0, _react.useRef)(null);
46
- var rafRef2 = (0, _react.useRef)(null);
47
45
  (0, _react.useEffect)(function () {
48
46
  // Ensure dataset is a valid array
49
47
  var validDataset = Array.isArray(dataset) ? dataset : [];
@@ -73,23 +71,12 @@ var useListState = exports.useListState = function useListState(dataset, pagesiz
73
71
 
74
72
  // Update selected item widgets after DOM is painted
75
73
  if (listener !== null && listener !== void 0 && listener.onChange && name) {
76
- rafRef1.current = requestAnimationFrame(function () {
77
- // getSelectedItemWidgets(null, listener, name);
78
- rafRef2.current = requestAnimationFrame(function () {
79
- (0, _listHelpers.getSelectedItemWidgets)(null, listener, name);
80
- });
74
+ requestAnimationFrame(function () {
75
+ (0, _listHelpers.getSelectedItemWidgets)(null, listener, name);
81
76
  });
82
77
  }
83
78
  }
84
79
  }
85
- return function () {
86
- if (rafRef1.current) {
87
- cancelAnimationFrame(rafRef1.current);
88
- }
89
- if (rafRef2.current) {
90
- cancelAnimationFrame(rafRef2.current);
91
- }
92
- };
93
80
  }, [dataset, selectfirstitem, name]);
94
81
  return {
95
82
  selectedItems: selectedItems,
@@ -495,7 +495,6 @@ var WmList = function WmList(props) {
495
495
  }),
496
496
  component: "div",
497
497
  "data-name": name,
498
- name: name,
499
498
  "data-navigation": navigation
500
499
  }, __jsx(_components2.ListHeader, {
501
500
  title: title,
@@ -164,8 +164,10 @@ var getSelectedItemWidgets = exports.getSelectedItemWidgets = function getSelect
164
164
  return result;
165
165
  }, {});
166
166
  if (listener) {
167
- listener.onChange(name, {
168
- selectedItemWidgets: currentItemWidgets
169
- });
167
+ setTimeout(function () {
168
+ listener.onChange(name, {
169
+ selectedItemWidgets: currentItemWidgets
170
+ });
171
+ }, 0);
170
172
  }
171
173
  };
@@ -49,7 +49,7 @@ var useListWidgetMethods = exports.useListWidgetMethods = function useListWidget
49
49
  onSelect(widgetInstance, item);
50
50
  }
51
51
  }
52
- }, [listState.activeItems, getItemByIndexOrModel]);
52
+ }, [listState.activeItems]);
53
53
  var deselectItem = (0, _react.useCallback)(function (val) {
54
54
  var item = getItemByIndexOrModel(val);
55
55
  if (!item) {
@@ -15,6 +15,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
15
15
  var _lodashEs = require("lodash-es");
16
16
  var _util = require("../../../core/util");
17
17
  var _form = _interopRequireDefault(require("../form"));
18
+ var _withBaseWrapper = _interopRequireDefault(require("../../../higherOrder/withBaseWrapper"));
18
19
  var _props = require("./props");
19
20
  var _types = require("../types");
20
21
  var _utils = require("../utils");
@@ -237,12 +238,10 @@ var WmLiveFilter = function WmLiveFilter(prop) {
237
238
  }));
238
239
  return _Livefilter.apply(this, arguments);
239
240
  }
240
- function onDataSourceChange(formFields) {
241
+ function onDataSourceChange() {
241
242
  if (isDataSourceUpdatedRef.current) return;
242
- // const fields = get(props.listener.Widgets[props.name], "formfields", []);
243
-
244
- // let formFields = isArray(fields) ? fields : Object.values(fields || {});
245
-
243
+ var fields = (0, _lodashEs.get)(props.listener.Widgets[props.name], "formfields", []);
244
+ var formFields = (0, _lodashEs.isArray)(fields) ? fields : Object.values(fields || {});
246
245
  if ((0, _lodashEs.get)(formFields, "length")) {
247
246
  isDataSourceUpdatedRef.current = true;
248
247
  }
@@ -277,4 +276,4 @@ var WmLiveFilter = function WmLiveFilter(prop) {
277
276
  );
278
277
  };
279
278
  WmLiveFilter.displayName = "WmLiveFilter";
280
- var _default = exports["default"] = WmLiveFilter;
279
+ var _default = exports["default"] = (0, _withBaseWrapper["default"])(WmLiveFilter);
@@ -1,56 +1,44 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof3 = require("@babel/runtime/helpers/typeof");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports["default"] = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
12
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
12
  var _props = require("./props");
14
13
  var _form = _interopRequireDefault(require("../form"));
14
+ var _get = _interopRequireDefault(require("lodash-es/get"));
15
+ var _isArray = _interopRequireDefault(require("lodash-es/isArray"));
15
16
  var _fieldDataUtils = require("../utils/field-data-utils");
16
17
  var _replace = _interopRequireDefault(require("lodash-es/replace"));
17
- var _utils = require("../utils");
18
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
18
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
19
19
  var __jsx = _react["default"].createElement;
20
20
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
21
21
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
22
22
  var WmLiveForm = function WmLiveForm(prop) {
23
+ var _props$listener;
23
24
  var props = _objectSpread(_objectSpread({}, _props.DEFAULT_PROPS), prop);
24
25
  var dynamicFieldsRef = (0, _react.useRef)([]);
25
26
  var isDataSourceUpdatedRef = (0, _react.useRef)(false);
26
- var dataSource = props.datasource;
27
- function formSubmit(formData, success, error) {
28
- var primaryKeys = dataSource.execute("getPrimaryKey");
29
- var operationType = (0, _utils.findOperationType)(formData, primaryKeys);
27
+ var dataSource = (_props$listener = props.listener) === null || _props$listener === void 0 || (_props$listener = _props$listener.Variables) === null || _props$listener === void 0 ? void 0 : _props$listener[props.datasource];
28
+ function formSubmit(formData, success, error, operation) {
30
29
  if (dynamicFieldsRef.current.length > 0) {
31
30
  dynamicFieldsRef.current.forEach(function (field) {
32
31
  var item = field.formKey;
33
32
  formData[item] = field.dataset[formData[item] - 1];
34
33
  });
35
34
  }
36
- var successWithOperationType = function successWithOperationType(res) {
37
- var payload = res && (0, _typeof2["default"])(res) === "object" ? _objectSpread(_objectSpread({}, res), {}, {
38
- operationType: operationType
39
- }) : {
40
- operationType: operationType
41
- };
42
- if (typeof success === "function") {
43
- success(payload);
44
- }
45
- return payload;
46
- };
47
- if (operationType === "delete") {
48
- props.formSubmit(formData, operationType, successWithOperationType, error);
35
+ if (operation === "delete") {
36
+ props.formSubmit(formData, operation, success, error);
49
37
  return;
50
38
  }
51
39
  props.formSubmit({
52
40
  inputFields: formData
53
- }, operationType, successWithOperationType, error);
41
+ }, operation, success, error);
54
42
  }
55
43
  function getRelatedTableData(formField) {
56
44
  dataSource && dataSource.execute("getRelatedTableData", {
@@ -74,9 +62,11 @@ var WmLiveForm = function WmLiveForm(prop) {
74
62
  });
75
63
  });
76
64
  }
77
- function onDataSourceChange(formFields) {
65
+ function onDataSourceChange() {
78
66
  if (isDataSourceUpdatedRef.current) return;
79
- if (formFields.length > 0) {
67
+ var fields = (0, _get["default"])(props.listener.Widgets[props.name], "formfields", []);
68
+ var formFields = (0, _isArray["default"])(fields) ? fields : Object.values(fields || {});
69
+ if ((0, _get["default"])(formFields, "length")) {
80
70
  isDataSourceUpdatedRef.current = true;
81
71
  }
82
72
  formFields.forEach(function (field) {
@@ -254,10 +254,26 @@ var TableBodyComponentBase = function TableBodyComponentBase(_ref4) {
254
254
  className: "app-grid-content ".concat(_utils.TABLE_CSS_CLASSES.gridBody)
255
255
  }, formposition === "top" && renderAddNewRow(), renderTableContent(), formposition === "bottom" && renderAddNewRow());
256
256
  };
257
- var TableBodyComponent = exports.TableBodyComponent = /*#__PURE__*/(0, _react.memo)(TableBodyComponentBase, function (prev, current) {
258
- var keys = ["isLoading", "rowClass", "formposition", "nodatamessage", "loadingdatamsg", "rowsVersion", "tableData", "ColClassSignature"];
259
- return keys.every(function (key) {
260
- return prev[key] === current[key];
261
- });
257
+ var TableBodyComponent = exports.TableBodyComponent = /*#__PURE__*/(0, _react.memo)(TableBodyComponentBase, function (prevProps, nextProps) {
258
+ // Since table key forces rebuilds on pagination, we can use simpler memoization
259
+ // Just prevent re-renders from function reference changes
260
+
261
+ // Allow re-render for these critical changes
262
+ if (prevProps.isLoading !== nextProps.isLoading) return false;
263
+ if (prevProps.rowClass !== nextProps.rowClass) return false;
264
+ if (prevProps.formposition !== nextProps.formposition) return false;
265
+ if (prevProps.nodatamessage !== nextProps.nodatamessage) return false;
266
+
267
+ // Check expandedRows
268
+ if (prevProps.expandedRows !== nextProps.expandedRows) {
269
+ var _prevProps$expandedRo, _nextProps$expandedRo;
270
+ var prevSize = ((_prevProps$expandedRo = prevProps.expandedRows) === null || _prevProps$expandedRo === void 0 ? void 0 : _prevProps$expandedRo.size) || 0;
271
+ var nextSize = ((_nextProps$expandedRo = nextProps.expandedRows) === null || _nextProps$expandedRo === void 0 ? void 0 : _nextProps$expandedRo.size) || 0;
272
+ if (prevSize !== nextSize) return false;
273
+ }
274
+
275
+ // Block re-render only for function reference changes (prevents infinite loops)
276
+ // Table key handles pagination rebuilds, so we don't need complex row comparisons
277
+ return true; // Prevent re-render for function reference changes only
262
278
  });
263
279
  TableBodyComponent.displayName = "TableBodyComponent";
@@ -86,7 +86,6 @@ var TableHeaderComponent = exports.TableHeaderComponent = /*#__PURE__*/(0, _reac
86
86
  key: headerGroup.id,
87
87
  className: "".concat(_utils.TABLE_CSS_CLASSES.tableRow, " ").concat(rowClass)
88
88
  }, headerGroup.headers.map(function (header, headerIndex) {
89
- var _header$column$column;
90
89
  var cells = [];
91
90
 
92
91
  // Insert expansion header before this cell if it's at the calculated position
@@ -105,7 +104,7 @@ var TableHeaderComponent = exports.TableHeaderComponent = /*#__PURE__*/(0, _reac
105
104
  // Add the regular header cell
106
105
  cells.push(__jsx(_material.TableCell, {
107
106
  key: header.id,
108
- className: "".concat(_utils.TABLE_CSS_CLASSES.headerCell, " ").concat(((_header$column$column = header.column.columnDef) === null || _header$column$column === void 0 || (_header$column$column = _header$column$column.meta) === null || _header$column$column === void 0 ? void 0 : _header$column$column.className) || "").trim(),
107
+ className: _utils.TABLE_CSS_CLASSES.headerCell,
109
108
  style: {
110
109
  cursor: enablesort && header.column.getCanSort() ? "pointer" : "default",
111
110
  userSelect: "none",
@@ -148,9 +147,6 @@ var TableHeaderComponent = exports.TableHeaderComponent = /*#__PURE__*/(0, _reac
148
147
  // Compare props including the sorting state
149
148
  var prevSorting = prevProps.sorting || [];
150
149
  var nextSorting = nextProps.sorting || [];
151
- if (prevProps.ColClassSignature !== nextProps.ColClassSignature) {
152
- return false;
153
- }
154
150
 
155
151
  // Deep compare sorting arrays
156
152
  var sortingEqual = prevSorting.length === nextSorting.length && prevSorting.every(function (prevSort, index) {
@@ -550,18 +550,6 @@ var WmTableComponent = exports.WmTableComponent = /*#__PURE__*/(0, _react.memo)(
550
550
  });
551
551
  }, [columns, columnOverrides, columnsVersion, editingRowId]);
552
552
 
553
- // Compute class signature from columns meta.className to trigger header and body re-render on class updates
554
- var ColClassSignature = (0, _react.useMemo)(function () {
555
- try {
556
- return (columnsForTable || []).map(function (col) {
557
- var _col$meta;
558
- return String((col === null || col === void 0 || (_col$meta = col.meta) === null || _col$meta === void 0 ? void 0 : _col$meta.className) || "");
559
- }).join("|");
560
- } catch (_unused) {
561
- return "";
562
- }
563
- }, [columnsForTable]);
564
-
565
553
  // Use filter hook for filtering functionality
566
554
  var _useTableFilter = (0, _hooks.useTableFilter)({
567
555
  filterMode: filtermode,
@@ -746,12 +734,12 @@ var WmTableComponent = exports.WmTableComponent = /*#__PURE__*/(0, _react.memo)(
746
734
  if (filtermode === "search") {
747
735
  if (globalFilter || globalSearchColumn) {
748
736
  // Find column type for the selected search column
749
- var columnType = globalSearchColumn ? function (_col$meta2, _col$meta3) {
737
+ var columnType = globalSearchColumn ? function (_col$meta, _col$meta2) {
750
738
  var col = (0, _lodashEs.find)(columnsForTable, function (c) {
751
739
  var column = c;
752
740
  return column.accessorKey === globalSearchColumn || column.id === globalSearchColumn;
753
741
  });
754
- return (col === null || col === void 0 || (_col$meta2 = col.meta) === null || _col$meta2 === void 0 ? void 0 : _col$meta2.type) || (col === null || col === void 0 || (_col$meta3 = col.meta) === null || _col$meta3 === void 0 ? void 0 : _col$meta3.editinputtype) || "string";
742
+ return (col === null || col === void 0 || (_col$meta = col.meta) === null || _col$meta === void 0 ? void 0 : _col$meta.type) || (col === null || col === void 0 || (_col$meta2 = col.meta) === null || _col$meta2 === void 0 ? void 0 : _col$meta2.editinputtype) || "string";
755
743
  }() : "string";
756
744
  return [{
757
745
  field: globalSearchColumn || "",
@@ -771,12 +759,12 @@ var WmTableComponent = exports.WmTableComponent = /*#__PURE__*/(0, _react.memo)(
771
759
  field = _ref5[0],
772
760
  filter = _ref5[1];
773
761
  // Find column type for each field
774
- var columnType = function (_col$meta4, _col$meta5) {
762
+ var columnType = function (_col$meta3, _col$meta4) {
775
763
  var col = (0, _lodashEs.find)(columnsForTable, function (c) {
776
764
  var column = c;
777
765
  return column.accessorKey === field || column.id === field;
778
766
  });
779
- return (col === null || col === void 0 || (_col$meta4 = col.meta) === null || _col$meta4 === void 0 ? void 0 : _col$meta4.type) || (col === null || col === void 0 || (_col$meta5 = col.meta) === null || _col$meta5 === void 0 ? void 0 : _col$meta5.editinputtype) || "string";
767
+ return (col === null || col === void 0 || (_col$meta3 = col.meta) === null || _col$meta3 === void 0 ? void 0 : _col$meta3.type) || (col === null || col === void 0 || (_col$meta4 = col.meta) === null || _col$meta4 === void 0 ? void 0 : _col$meta4.editinputtype) || "string";
780
768
  }();
781
769
  return {
782
770
  field: field,
@@ -1209,7 +1197,6 @@ var WmTableComponent = exports.WmTableComponent = /*#__PURE__*/(0, _react.memo)(
1209
1197
  table: table,
1210
1198
  enablesort: enablesort,
1211
1199
  rowClass: rowClass,
1212
- ColClassSignature: ColClassSignature,
1213
1200
  sorting: sorting,
1214
1201
  columnSizing: columnSizing,
1215
1202
  rowSelection: rowSelection,
@@ -1235,10 +1222,7 @@ var WmTableComponent = exports.WmTableComponent = /*#__PURE__*/(0, _react.memo)(
1235
1222
  rowExpansionConfig: rowExpansionConfig,
1236
1223
  expandedRows: expandedRows,
1237
1224
  toggleRowExpansion: toggleRowExpansion,
1238
- isRowExpanded: isRowExpanded,
1239
- rowsVersion: tableData.length,
1240
- ColClassSignature: ColClassSignature,
1241
- tableData: tableData
1225
+ isRowExpanded: isRowExpanded
1242
1226
  })))))), __jsx(_material.Box, {
1243
1227
  className: "panel-footer clearfix"
1244
1228
  }, showPagination && __jsx(_material.Box, {
@@ -29,7 +29,7 @@ var getDistinctFieldProperties = exports.getDistinctFieldProperties = function g
29
29
  props.filterExpr = formField.filterexpressions ? (0, _lodashEs.isObject)(formField.filterexpressions) ? formField.filterexpressions : JSON.parse(formField.filterexpressions) : {};
30
30
  } else {
31
31
  props.tableName = dataSource.execute(_types.DataSource.Operation.GET_ENTITY_NAME);
32
- fieldColumn = formField["fieldcol"] || formField.key;
32
+ fieldColumn = formField.field || formField.key;
33
33
  props.distinctField = fieldColumn;
34
34
  props.aliasColumn = fieldColumn;
35
35
  }
@@ -10,6 +10,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
  var _react = _interopRequireWildcard(require("react"));
12
12
  var _Dialog = _interopRequireDefault(require("@mui/material/Dialog"));
13
+ var _Slide = _interopRequireDefault(require("@mui/material/Slide"));
13
14
  var _Fade = _interopRequireDefault(require("@mui/material/Fade"));
14
15
  var _clsx = _interopRequireDefault(require("clsx"));
15
16
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
@@ -17,6 +18,21 @@ var __jsx = _react["default"].createElement;
17
18
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
18
19
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
19
20
  var DEFAULT_CLASS = "modal fade in";
21
+ var Transition = /*#__PURE__*/_react["default"].forwardRef(function Transition(props, ref) {
22
+ return __jsx(_Slide["default"], (0, _extends2["default"])({
23
+ direction: "down",
24
+ ref: ref
25
+ }, props, {
26
+ timeout: {
27
+ enter: 500,
28
+ exit: 400
29
+ },
30
+ easing: {
31
+ enter: "cubic-bezier(0.4, 0, 0.2, 1)",
32
+ exit: "cubic-bezier(0.4, 0, 0.2, 1)"
33
+ }
34
+ }));
35
+ });
20
36
  var FadeTransition = /*#__PURE__*/_react["default"].forwardRef(function FadeTransition(props, ref) {
21
37
  return __jsx(_Fade["default"], (0, _extends2["default"])({
22
38
  ref: ref
@@ -31,19 +47,6 @@ var FadeTransition = /*#__PURE__*/_react["default"].forwardRef(function FadeTran
31
47
  }
32
48
  }), props.children);
33
49
  });
34
-
35
- // Memoized body scroll management
36
- var useBodyScrollLock = function useBodyScrollLock(lock) {
37
- (0, _react.useEffect)(function () {
38
- if (!lock || typeof document === "undefined") return;
39
- var body = document.body;
40
- var originalOverflow = body.style.overflow;
41
- body.style.overflow = "hidden";
42
- return function () {
43
- body.style.overflow = originalOverflow;
44
- };
45
- }, [lock]);
46
- };
47
50
  var WmDialog = exports.WmDialog = /*#__PURE__*/(0, _react.memo)(function (props) {
48
51
  var children = props.children,
49
52
  className = props.className,
@@ -69,7 +72,6 @@ var WmDialog = exports.WmDialog = /*#__PURE__*/(0, _react.memo)(function (props)
69
72
  if (!open) {
70
73
  return null;
71
74
  }
72
- useBodyScrollLock(open);
73
75
  var sheetPositionStyles = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, props.sheetposition === "top" && {
74
76
  position: "absolute",
75
77
  top: 0