@wavemaker/react-runtime 11.15.3-rc.647481 → 11.15.4-rc.647493

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 (46) hide show
  1. package/components/basic/richtexteditor/index.js +53 -9
  2. package/components/chart/index.js +2 -11
  3. package/components/common/AppSpinner.js +4 -1
  4. package/components/container/panel/components/panel-content/index.js +18 -0
  5. package/components/container/wizard/index.js +1 -1
  6. package/components/data/form/base-form/index.js +156 -105
  7. package/components/data/form/form-context.js +17 -1
  8. package/components/data/form/form-controller/hooks/index.js +127 -0
  9. package/components/data/form/form-controller/utils.js +52 -1
  10. package/components/data/form/form-controller/withFormController.js +10 -162
  11. package/components/data/form/form-dynamic-section/index.js +46 -0
  12. package/components/data/form/form-dynamic-section/props.js +5 -0
  13. package/components/data/form/index.js +5 -0
  14. package/components/data/list/hooks/useListEffects.js +10 -3
  15. package/components/data/list/hooks/useListEventHandlers.js +20 -15
  16. package/components/data/list/index.js +7 -8
  17. package/components/data/list/utils/list-helpers.js +21 -1
  18. package/components/data/list/utils/list-widget-methods.js +2 -0
  19. package/components/data/list/utils/widget-instance-utils.js +82 -0
  20. package/components/data/pagination/components/BasicPagination.js +1 -0
  21. package/components/data/pagination/components/PageSizeSelector.js +11 -3
  22. package/components/data/pagination/index.js +1 -2
  23. package/components/data/table/hooks/useServerSideSorting.js +10 -16
  24. package/components/data/table/index.js +55 -57
  25. package/components/data/table/utils/buildSelectionColumns.js +23 -32
  26. package/components/data/table/utils/index.js +7 -2
  27. package/components/dialogs/index.js +6 -0
  28. package/components/input/default/checkbox/index.js +5 -2
  29. package/components/input/epoch/date/components/DatePickerPopover.js +17 -2
  30. package/components/input/epoch/date/index.js +21 -17
  31. package/components/input/epoch/datetime/index.js +2 -4
  32. package/components/navigation/popover/index.js +8 -21
  33. package/components/page/partial-container/index.js +19 -1
  34. package/context/WidgetProvider.js +28 -14
  35. package/core/proxy-service.js +1 -2
  36. package/core/util/compare.js +6 -0
  37. package/higherOrder/BasePage.js +1 -1
  38. package/higherOrder/withBaseWrapper.js +22 -8
  39. package/libs/index.js +3 -10
  40. package/libs/prefab/index.js +20 -0
  41. package/package-lock.json +111 -82
  42. package/package.json +2 -2
  43. package/utils/lib-error-skipper.js +5 -2
  44. package/utils/state-persistance.js +42 -33
  45. package/utils/widget-cleanup-util.js +30 -0
  46. package/variables/live-variable.js +18 -0
@@ -17,6 +17,7 @@ var _utils = require("./utils");
17
17
  var _DatePickerPopover = _interopRequireDefault(require("./components/DatePickerPopover"));
18
18
  var _store = require("@wavemaker/react-runtime/store");
19
19
  var _withFormController = _interopRequireDefault(require("@wavemaker/react-runtime/components/data/form/form-controller/withFormController"));
20
+ var _button = require("@wavemaker/react-runtime/components/form/button");
20
21
  var _excluded = ["name", "hint", "shortcutkey", "datavalue", "width", "arialabel", "invokeOnChange", "handleKeyDown", "getDateObj", "updatePrevDatavalue", "updateBoundVariable", "onChange", "onClick", "onFocus", "onBlur", "onMouseEnter", "onMouseLeave", "onBeforeload", "placeholder", "tabindex", "datepattern", "outputformat", "required", "excludedays", "excludedates", "showweeks", "showbuttonbar", "autofocus", "readonly", "disabled", "showdropdownon", "adaptiveposition", "selectfromothermonth", "todaybutton", "clearbutton", "todaybuttonlabel", "clearbuttonlabel", "showcustompicker", "showdateformatasplaceholder", "viewmode", "dataentrymode", "listener", "className", "styles", "validators", "validationmessage"];
21
22
  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); }
22
23
  var __jsx = _react["default"].createElement;
@@ -521,6 +522,25 @@ var WmDate = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
521
522
  }
522
523
  }
523
524
  },
525
+ InputProps: {
526
+ endAdornment: __jsx(_material.Box, {
527
+ component: "span",
528
+ className: "input-group-btn"
529
+ }, __jsx(_button.WmButton, {
530
+ type: "button",
531
+ className: "btn btn-default btn-time",
532
+ tabIndex: tabindex,
533
+ disabled: disabled || readonly,
534
+ "aria-label": inputValue ? "Change Date ".concat(inputValue) : "Choose date by pressing enter",
535
+ "aria-haspopup": "true",
536
+ "aria-expanded": showPicker,
537
+ onClick: handleIconButtonClick
538
+ }, __jsx(_material.Box, {
539
+ component: "i",
540
+ "aria-hidden": "true",
541
+ className: "app-icon wm-sl-l sl-calendar"
542
+ })))
543
+ },
524
544
  value: inputValue,
525
545
  onChange: handleInputChange,
526
546
  onKeyDown: handleInputKeyDown,
@@ -532,23 +552,7 @@ var WmDate = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
532
552
  return _onBlur && name && _onBlur(event, listener === null || listener === void 0 ? void 0 : listener.Widgets[name]);
533
553
  },
534
554
  style: (0, _utils.getWidthStyle)(width)
535
- }), __jsx(_material.Box, {
536
- component: "span",
537
- className: "input-group-btn"
538
- }, __jsx(_material.Button, {
539
- type: "button",
540
- className: "btn btn-default btn-time",
541
- tabIndex: tabindex,
542
- disabled: disabled || readonly,
543
- "aria-label": inputValue ? "Change Date ".concat(inputValue) : "Choose date by pressing enter",
544
- "aria-haspopup": "true",
545
- "aria-expanded": showPicker,
546
- onClick: handleIconButtonClick
547
- }, __jsx(_material.Box, {
548
- component: "i",
549
- "aria-hidden": "true",
550
- className: "app-icon wm-sl-l sl-calendar"
551
- }))), showPicker && __jsx(_DatePickerPopover["default"], {
555
+ }), showPicker && __jsx(_DatePickerPopover["default"], {
552
556
  open: showPicker,
553
557
  anchorEl: anchorEl,
554
558
  onClose: handleClose,
@@ -12,13 +12,13 @@ var _material = require("@mui/material");
12
12
  var _DatePicker = require("@mui/x-date-pickers/DatePicker");
13
13
  var _TimePicker = require("@mui/x-date-pickers/TimePicker");
14
14
  var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
15
- var _isEqual = _interopRequireDefault(require("lodash-es/isEqual"));
16
15
  var _clsx = _interopRequireDefault(require("clsx"));
17
16
  var _BaseDateTime = _interopRequireDefault(require("@wavemaker/react-runtime/higherOrder/BaseDateTime"));
18
17
  var _withFormController = _interopRequireDefault(require("@wavemaker/react-runtime/components/data/form/form-controller/withFormController"));
19
18
  var _utils = require("./utils");
20
19
  var _styled = require("./styled");
21
20
  var _store = require("@wavemaker/react-runtime/store");
21
+ var _compare = _interopRequireDefault(require("../../../../core/util/compare"));
22
22
  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); }
23
23
  var __jsx = _react["default"].createElement;
24
24
  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; }
@@ -700,10 +700,8 @@ var WmDateTime = exports.WmDateTime = /*#__PURE__*/(0, _react.memo)(function (pr
700
700
  }));
701
701
  }, function (prev, next) {
702
702
  var keys = ["datavalue", "datepattern", "placeholder", "hint", "tabindex", "shortcutkey", "hourstep", "minutestep", "outputformat", "required", "mindate", "maxdate", "excludedays", "excludedates", "showweeks", "autofocus", "readonly", "disabled", "selectfromothermonth", "todaybutton", "clearbutton", "adaptiveposition", "showdropdownon", "dataentrymode", "width", "arialabel", "className", "isValidDate", "formatValidation", "floatinglabel", "styles", "showampmbuttons", "hidden", "validators", "validationmessage"];
703
- var p = prev;
704
- var n = next;
705
703
  return keys.every(function (key) {
706
- return (0, _isEqual["default"])(p[key], n[key]);
704
+ return (0, _compare["default"])(prev[key], next[key]);
707
705
  });
708
706
  });
709
707
  WmDateTime.displayName = "WmDateTime";
@@ -35,7 +35,6 @@ var WmPopover = function WmPopover(Props) {
35
35
  open = _useState4[0],
36
36
  setOpen = _useState4[1];
37
37
  var isOpen = Boolean(anchorEl);
38
- var parentWidgetRef = (0, _react.useRef)(null);
39
38
 
40
39
  // Exposeable methods
41
40
  var openPopover = (0, _react.useCallback)(function () {
@@ -46,11 +45,9 @@ var WmPopover = function WmPopover(Props) {
46
45
  calculatePlacement();
47
46
  setAnchorEl(anchorRef.current);
48
47
  setIsDialogOpen(true);
49
- props === null || props === void 0 || (_props$onShow = props.onShow) === null || _props$onShow === void 0 || _props$onShow.call(props, {}, _objectSpread(_objectSpread({
48
+ props === null || props === void 0 || (_props$onShow = props.onShow) === null || _props$onShow === void 0 || _props$onShow.call(props, {}, _objectSpread({
50
49
  isOpen: true
51
- }, props), {}, {
52
- viewParent: parentWidgetRef.current
53
- }));
50
+ }, props));
54
51
  }, []);
55
52
  var closePopover = (0, _react.useCallback)(function () {
56
53
  var _props$onHide;
@@ -59,11 +56,9 @@ var WmPopover = function WmPopover(Props) {
59
56
  }
60
57
  setAnchorEl(null);
61
58
  setIsDialogOpen(false);
62
- props === null || props === void 0 || (_props$onHide = props.onHide) === null || _props$onHide === void 0 || _props$onHide.call(props, {}, _objectSpread(_objectSpread({
59
+ props === null || props === void 0 || (_props$onHide = props.onHide) === null || _props$onHide === void 0 || _props$onHide.call(props, {}, _objectSpread({
63
60
  isOpen: false
64
- }, props), {}, {
65
- viewParent: parentWidgetRef.current
66
- }));
61
+ }, props));
67
62
  }, [isOpen]);
68
63
  var togglePopover = (0, _react.useCallback)(function () {
69
64
  if (isOpen) {
@@ -121,11 +116,9 @@ var WmPopover = function WmPopover(Props) {
121
116
  var handleClick = function handleClick(event) {
122
117
  event.preventDefault();
123
118
  event.stopPropagation();
124
- parentWidgetRef.current = props.listener;
125
119
  var widget = _objectSpread({
126
120
  isOpen: isOpen
127
121
  }, props);
128
- widget.viewParent = parentWidgetRef.current;
129
122
  delete widget.listener;
130
123
  if (!isOpen) {
131
124
  loadedRef.current = false;
@@ -172,9 +165,7 @@ var WmPopover = function WmPopover(Props) {
172
165
  else if (props.autoclose === "always") {
173
166
  var _props$onHide4;
174
167
  setAnchorEl(null);
175
- props === null || props === void 0 || (_props$onHide4 = props.onHide) === null || _props$onHide4 === void 0 || _props$onHide4.call(props, event.nativeEvent, _objectSpread(_objectSpread({}, props), {}, {
176
- viewParent: parentWidgetRef.current
177
- }));
168
+ props === null || props === void 0 || (_props$onHide4 = props.onHide) === null || _props$onHide4 === void 0 || _props$onHide4.call(props, event.nativeEvent, _objectSpread({}, props));
178
169
  return;
179
170
  }
180
171
 
@@ -183,18 +174,14 @@ var WmPopover = function WmPopover(Props) {
183
174
  if (reason === "backdropClick") {
184
175
  var _props$onHide5;
185
176
  setAnchorEl(null);
186
- props === null || props === void 0 || (_props$onHide5 = props.onHide) === null || _props$onHide5 === void 0 || _props$onHide5.call(props, event.nativeEvent, _objectSpread(_objectSpread({}, props), {}, {
187
- viewParent: parentWidgetRef.current
188
- }));
177
+ props === null || props === void 0 || (_props$onHide5 = props.onHide) === null || _props$onHide5 === void 0 || _props$onHide5.call(props, event.nativeEvent, _objectSpread({}, props));
189
178
  }
190
179
  return;
191
180
  }
192
181
 
193
182
  // Default behavior for any other autoclose value
194
183
  setAnchorEl(null);
195
- props === null || props === void 0 || (_props$onHide6 = props.onHide) === null || _props$onHide6 === void 0 || _props$onHide6.call(props, event.nativeEvent, _objectSpread(_objectSpread({}, props), {}, {
196
- viewParent: parentWidgetRef.current
197
- }));
184
+ props === null || props === void 0 || (_props$onHide6 = props.onHide) === null || _props$onHide6 === void 0 || _props$onHide6.call(props, event.nativeEvent, _objectSpread({}, props));
198
185
  }
199
186
  var arrowStyles = (0, _react.useMemo)(function () {
200
187
  if (!anchorRef.current) return {};
@@ -267,7 +254,7 @@ var WmPopover = function WmPopover(Props) {
267
254
  width: popoverWidth,
268
255
  pointerEvents: props.autoclose === "disabled" ? "none" : "auto"
269
256
  },
270
- className: (0, _clsx["default"])(placement, "app-popover in popover", props.contentanimation && "animated ".concat(props.contentanimation), "popover-".concat(placement), "bs-popover-".concat(placement), 'bs3 popover-logout-popover')
257
+ className: (0, _clsx["default"])(placement, "app-popover in popover", props.contentanimation && "animated ".concat(props.contentanimation), "popover-".concat(placement), "bs-popover-".concat(placement), "bs3 popover-logout-popover")
271
258
  }
272
259
  }
273
260
  }, __jsx("div", {
@@ -20,7 +20,8 @@ var WmPartialContainer = /*#__PURE__*/(0, _react.memo)(function (props) {
20
20
  var prefab = props.prefab,
21
21
  content = props.content,
22
22
  prefabName = props.prefabName,
23
- onLoad = props.onLoad;
23
+ onLoad = props.onLoad,
24
+ listener = props.listener;
24
25
  var loadedRef = (0, _react.useRef)(false);
25
26
  var params = {};
26
27
  var handleLoad = (0, _react.useCallback)(function (widget) {
@@ -55,6 +56,23 @@ var WmPartialContainer = /*#__PURE__*/(0, _react.memo)(function (props) {
55
56
  onRender: handleLoad
56
57
  })) : null);
57
58
  };
59
+
60
+ // Memoize partialParams, recompute only when props.params or params changes
61
+ var partialParams = (0, _react.useMemo)(function () {
62
+ var _props$params;
63
+ var acc = {};
64
+ props === null || props === void 0 || (_props$params = props.params) === null || _props$params === void 0 || _props$params.forEach(function (p) {
65
+ acc[p] = params === null || params === void 0 ? void 0 : params[p];
66
+ });
67
+ return acc;
68
+ }, [props === null || props === void 0 ? void 0 : props.params, params]);
69
+ (0, _react.useEffect)(function () {
70
+ if (listener) {
71
+ listener.onChange(props.partialName, {
72
+ partialParams: partialParams || {}
73
+ });
74
+ }
75
+ }, [partialParams]);
58
76
  return __jsx(_Container["default"], {
59
77
  className: "partial-container"
60
78
  }, __jsx(_react.Suspense, {
@@ -12,8 +12,10 @@ var _react = _interopRequireWildcard(require("react"));
12
12
  var _get = _interopRequireDefault(require("lodash-es/get"));
13
13
  var _debounce = _interopRequireDefault(require("lodash-es/debounce"));
14
14
  var _proxyService = require("../core/proxy-service");
15
+ var _useDebounce = require("../hooks/useDebounce");
15
16
  var _useHttp = require("../hooks/useHttp");
16
17
  var _formState = require("../utils/form-state.util");
18
+ var _widgetCleanupUtil = require("../utils/widget-cleanup-util");
17
19
  var _events = require("../core/constants/events");
18
20
  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
21
  var __jsx = _react["default"].createElement;
@@ -34,6 +36,32 @@ var WidgetProvider = exports.WidgetProvider = function WidgetProvider(_ref) {
34
36
  setPageContext = _useState[1];
35
37
  var pageContextRef = (0, _react.useRef)(value);
36
38
  pageContextRef.current = pageContext;
39
+ var pendingDestroysRef = (0, _react.useRef)(new Set());
40
+ var flushDestroys = (0, _react.useCallback)(function () {
41
+ var names = Array.from(pendingDestroysRef.current);
42
+ pendingDestroysRef.current.clear();
43
+ if (names.length === 0) return;
44
+ setPageContext(function (prev) {
45
+ var newContext = (0, _widgetCleanupUtil.removeWidgetsFromContext)(prev, proxy, names);
46
+ if (newContext !== prev) {
47
+ pageContextRef.current = newContext;
48
+ }
49
+ return newContext;
50
+ });
51
+ }, []);
52
+ var debouncedFlushDestroys = (0, _useDebounce.useDebounceCallback)(flushDestroys, 100);
53
+ (0, _react.useEffect)(function () {
54
+ return function () {
55
+ return debouncedFlushDestroys.cancel();
56
+ };
57
+ }, [debouncedFlushDestroys]);
58
+ var destroy = (0, _react.useCallback)(function (widgetNames) {
59
+ if (!(widgetNames !== null && widgetNames !== void 0 && widgetNames.length)) return;
60
+ widgetNames.forEach(function (name) {
61
+ return name && pendingDestroysRef.current.add(name);
62
+ });
63
+ debouncedFlushDestroys();
64
+ }, [debouncedFlushDestroys]);
37
65
  (0, _react.useEffect)(function () {
38
66
  setPageContext(function (prevContext) {
39
67
  var newContext = _objectSpread({}, prevContext);
@@ -124,20 +152,6 @@ var WidgetProvider = exports.WidgetProvider = function WidgetProvider(_ref) {
124
152
  if (isPage || !partialName) return;
125
153
  debouncedEmitRef.current(partialName, proxy);
126
154
  }, [isPage, partialName, pageContext]);
127
- var destroy = (0, _react.useCallback)(function (widgetName) {
128
- widgetName.forEach(function (name) {
129
- var _overriddenPropsRegis;
130
- pageContext === null || pageContext === void 0 || (_overriddenPropsRegis = pageContext.overriddenPropsRegistry) === null || _overriddenPropsRegis === void 0 || _overriddenPropsRegis.destroy(name);
131
- if (pageContext.Widgets[name]) {
132
- delete pageContext.Widgets[name];
133
- delete proxy.Widgets[name];
134
- }
135
- if (pageContext.Widgets[name]) {
136
- delete pageContext.Widgets[name];
137
- delete proxy.Widgets[name];
138
- }
139
- });
140
- }, []);
141
155
  var contextValue = (0, _react.useMemo)(function () {
142
156
  return {
143
157
  pageContext: pageContext,
@@ -14,7 +14,6 @@ var _serviceVariable = require("../variables/service-variable");
14
14
  var _events = require("../core/constants/events");
15
15
  var _isEqual = _interopRequireDefault(require("lodash-es/isEqual"));
16
16
  var _liveVariable = _interopRequireDefault(require("../variables/live-variable"));
17
- var _modelVariable = require("../variables/model-variable");
18
17
  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; }
19
18
  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; }
20
19
  // WeakMap to store proxy flags without exposing them as props
@@ -446,7 +445,7 @@ var _createStateProxy = exports.createStateProxy = function createStateProxy(obj
446
445
  if (descriptor && !descriptor.configurable && !descriptor.writable) {
447
446
  return value;
448
447
  }
449
- if (value instanceof _serviceVariable.ServiceVariable || value instanceof _liveVariable["default"] || value instanceof _modelVariable.ModelVariable) {
448
+ if (value instanceof _serviceVariable.ServiceVariable || value instanceof _liveVariable["default"]) {
450
449
  return value;
451
450
  }
452
451
 
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports["default"] = compare;
8
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
8
9
  var _isEqual = _interopRequireDefault(require("lodash-es/isEqual"));
9
10
  function compare(prev, next) {
10
11
  // Handle null/undefined cases
@@ -14,6 +15,11 @@ function compare(prev, next) {
14
15
  if (!prev || !next) {
15
16
  return false;
16
17
  }
18
+
19
+ // Primitives (number, string, boolean, etc.): use isEqual; 'in' only works on objects
20
+ if ((0, _typeof2["default"])(prev) !== "object" || (0, _typeof2["default"])(next) !== "object") {
21
+ return (0, _isEqual["default"])(prev, next);
22
+ }
17
23
  var keys = Object.keys(next);
18
24
  return keys.every(function (key) {
19
25
  var prevValue = prev[key];
@@ -280,7 +280,7 @@ var withPageContext = exports.withPageContext = function withPageContext(Wrapped
280
280
  Actions: updatedActions
281
281
  });
282
282
  });
283
- }, [appContext === null || appContext === void 0 ? void 0 : appContext.isAppReady, appContext === null || appContext === void 0 ? void 0 : appContext.Variables, appContext === null || appContext === void 0 ? void 0 : appContext.Actions]);
283
+ }, [appContext === null || appContext === void 0 ? void 0 : appContext.isAppReady]);
284
284
 
285
285
  // Main initialization effect - runs only when conditions are met
286
286
  (0, _react.useEffect)(function () {
@@ -32,7 +32,8 @@ var withBaseWrapper = exports.withBaseWrapper = function withBaseWrapper(Wrapped
32
32
  var _usePageContext = (0, _WidgetProvider.usePageContext)(),
33
33
  pageContext = _usePageContext.pageContext,
34
34
  updateWidgetState = _usePageContext.updateWidgetState,
35
- destroy = _usePageContext.destroy;
35
+ destroy = _usePageContext.destroy,
36
+ proxy = _usePageContext.proxy;
36
37
 
37
38
  // All hooks must be called before any early returns
38
39
  var _useDeviceVisibility = (0, _useDeviceVisibility2.useDeviceVisibility)(props.showindevice || ["all"]),
@@ -47,9 +48,11 @@ var withBaseWrapper = exports.withBaseWrapper = function withBaseWrapper(Wrapped
47
48
  // Register widget in context (last wins - second component should win)
48
49
  (0, _react.useEffect)(function () {
49
50
  if (name && (props === null || props === void 0 ? void 0 : props.iswidget) !== "false" && pageContext !== null && pageContext !== void 0 && pageContext.Widgets) {
50
- // Create registry entry with widget-id
51
+ // Create registry entry with widget-id and viewParent so wm.Widgets[name].viewParent is available
51
52
  var registryEntry = _objectSpread(_objectSpread({}, props), {}, {
52
- "data-widget-id": componentWidgetId || undefined // Ensure widget-id is stored
53
+ "data-widget-id": componentWidgetId || undefined,
54
+ // Ensure widget-id is stored
55
+ viewParent: proxy
53
56
  });
54
57
 
55
58
  // Last component with same name overwrites previous (LAST WINS)
@@ -67,6 +70,7 @@ var withBaseWrapper = exports.withBaseWrapper = function withBaseWrapper(Wrapped
67
70
 
68
71
  // Extract widget-id from context widget
69
72
  var contextWidgetId = widget === null || widget === void 0 ? void 0 : widget["data-widget-id"];
73
+ var component = WrappedComponent.displayName;
70
74
 
71
75
  // FIRST WINS: Only merge if this component's widget-id matches the context
72
76
  // OR if no widget-id filtering is needed (backward compatibility)
@@ -103,21 +107,28 @@ var withBaseWrapper = exports.withBaseWrapper = function withBaseWrapper(Wrapped
103
107
  }
104
108
  } else if (shouldMergeFromContext) {
105
109
  // For regular widgets (no widget-id or matching widget-id), merge with component props taking precedence
106
- mergedState = _objectSpread(_objectSpread(_objectSpread({}, widget), props), WrappedComponent.displayName === "WmFormField" && !props.value && {
110
+ mergedState = _objectSpread(_objectSpread(_objectSpread({}, widget), props), component === "WmFormField" && !props.value && {
107
111
  value: datavalue,
108
112
  datavalue: datavalue
109
113
  });
110
114
  } else {
111
115
  // Widget-id mismatch: component stays independent with only its own props
112
- mergedState = _objectSpread(_objectSpread({}, props), WrappedComponent.displayName === "WmFormField" && !props.value && {
116
+ mergedState = _objectSpread(_objectSpread({}, props), component === "WmFormField" && !props.value && {
113
117
  value: datavalue,
114
118
  datavalue: datavalue
115
119
  });
116
120
  }
121
+ if (component === "WmTable" && proxy.Widgets[name]) {
122
+ Object.keys(proxy.Widgets[name]).forEach(function (key) {
123
+ if (!mergedState[key]) {
124
+ mergedState[key] = proxy.Widgets[name][key];
125
+ }
126
+ });
127
+ }
117
128
  return mergedState;
118
129
  }, [props, widgetFromContext, componentWidgetId]);
119
130
  var syncWithContext = (0, _react.useCallback)(function () {
120
- if (name && pageContext !== null && pageContext !== void 0 && pageContext.Widgets && (props === null || props === void 0 ? void 0 : props.iswidget) !== "false" && !(props !== null && props !== void 0 && props.formfield)) {
131
+ if (name && pageContext !== null && pageContext !== void 0 && pageContext.Widgets && (props === null || props === void 0 ? void 0 : props.iswidget) !== "false") {
121
132
  var currentWidgetState = pageContext.Widgets[name] || {};
122
133
 
123
134
  // Extract widget-id from context
@@ -126,11 +137,13 @@ var withBaseWrapper = exports.withBaseWrapper = function withBaseWrapper(Wrapped
126
137
  // Only sync if widget-ids match OR no widget-id filtering needed
127
138
  var shouldSync = !componentWidgetId || !contextWidgetId || componentWidgetId === contextWidgetId;
128
139
  if (shouldSync) {
129
- // Skip comparing listener property
140
+ // Skip comparing listener property and viewParent propperties
130
141
  var stateForComparison = _objectSpread({}, currentWidgetState);
131
142
  var propsForComparison = _objectSpread({}, mergedProps);
132
143
  delete stateForComparison.listener;
133
144
  delete propsForComparison.listener;
145
+ delete stateForComparison.viewParent;
146
+ delete propsForComparison.viewParent;
134
147
  if (!(0, _isEqual["default"])(stateForComparison, propsForComparison)) {
135
148
  updateWidgetState(name, mergedProps);
136
149
  }
@@ -185,7 +198,8 @@ var withBaseWrapper = exports.withBaseWrapper = function withBaseWrapper(Wrapped
185
198
  }, (props === null || props === void 0 ? void 0 : props.dataset) && {
186
199
  dataset: props === null || props === void 0 ? void 0 : props.dataset
187
200
  }, {
188
- destroy: destroy
201
+ destroy: destroy,
202
+ viewParent: proxy
189
203
  }));
190
204
  };
191
205
  WithBaseComponent.displayName = "WithBase(".concat(WrappedComponent.displayName || WrappedComponent.name || "Component", ")");
package/libs/index.js CHANGED
@@ -4,17 +4,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- Object.defineProperty(exports, "QRCode", {
7
+ Object.defineProperty(exports, "moment", {
8
8
  enumerable: true,
9
9
  get: function get() {
10
- return _qrcodejs["default"];
10
+ return _moment["default"];
11
11
  }
12
12
  });
13
- Object.defineProperty(exports, "Utils", {
14
- enumerable: true,
15
- get: function get() {
16
- return _utils.Utils;
17
- }
18
- });
19
- var _utils = require("@wavemaker/react-runtime/core/util/utils");
20
- var _qrcodejs = _interopRequireDefault(require("qrcodejs2"));
13
+ var _moment = _interopRequireDefault(require("moment"));
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "QRCode", {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _qrcodejs["default"];
11
+ }
12
+ });
13
+ Object.defineProperty(exports, "Utils", {
14
+ enumerable: true,
15
+ get: function get() {
16
+ return _utils.Utils;
17
+ }
18
+ });
19
+ var _utils = require("@wavemaker/react-runtime/core/util/utils");
20
+ var _qrcodejs = _interopRequireDefault(require("qrcodejs2"));