@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.
- package/components/basic/richtexteditor/index.js +53 -9
- package/components/chart/index.js +2 -11
- package/components/common/AppSpinner.js +4 -1
- package/components/container/panel/components/panel-content/index.js +18 -0
- package/components/container/wizard/index.js +1 -1
- package/components/data/form/base-form/index.js +156 -105
- package/components/data/form/form-context.js +17 -1
- package/components/data/form/form-controller/hooks/index.js +127 -0
- package/components/data/form/form-controller/utils.js +52 -1
- package/components/data/form/form-controller/withFormController.js +10 -162
- package/components/data/form/form-dynamic-section/index.js +46 -0
- package/components/data/form/form-dynamic-section/props.js +5 -0
- package/components/data/form/index.js +5 -0
- package/components/data/list/hooks/useListEffects.js +10 -3
- package/components/data/list/hooks/useListEventHandlers.js +20 -15
- package/components/data/list/index.js +7 -8
- package/components/data/list/utils/list-helpers.js +21 -1
- package/components/data/list/utils/list-widget-methods.js +2 -0
- package/components/data/list/utils/widget-instance-utils.js +82 -0
- package/components/data/pagination/components/BasicPagination.js +1 -0
- package/components/data/pagination/components/PageSizeSelector.js +11 -3
- package/components/data/pagination/index.js +1 -2
- package/components/data/table/hooks/useServerSideSorting.js +10 -16
- package/components/data/table/index.js +55 -57
- package/components/data/table/utils/buildSelectionColumns.js +23 -32
- package/components/data/table/utils/index.js +7 -2
- package/components/dialogs/index.js +6 -0
- package/components/input/default/checkbox/index.js +5 -2
- package/components/input/epoch/date/components/DatePickerPopover.js +17 -2
- package/components/input/epoch/date/index.js +21 -17
- package/components/input/epoch/datetime/index.js +2 -4
- package/components/navigation/popover/index.js +8 -21
- package/components/page/partial-container/index.js +19 -1
- package/context/WidgetProvider.js +28 -14
- package/core/proxy-service.js +1 -2
- package/core/util/compare.js +6 -0
- package/higherOrder/BasePage.js +1 -1
- package/higherOrder/withBaseWrapper.js +22 -8
- package/libs/index.js +3 -10
- package/libs/prefab/index.js +20 -0
- package/package-lock.json +111 -82
- package/package.json +2 -2
- package/utils/lib-error-skipper.js +5 -2
- package/utils/state-persistance.js +42 -33
- package/utils/widget-cleanup-util.js +30 -0
- 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(
|
|
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,
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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),
|
|
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,
|
package/core/proxy-service.js
CHANGED
|
@@ -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"]
|
|
448
|
+
if (value instanceof _serviceVariable.ServiceVariable || value instanceof _liveVariable["default"]) {
|
|
450
449
|
return value;
|
|
451
450
|
}
|
|
452
451
|
|
package/core/util/compare.js
CHANGED
|
@@ -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];
|
package/higherOrder/BasePage.js
CHANGED
|
@@ -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
|
|
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
|
|
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),
|
|
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),
|
|
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"
|
|
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, "
|
|
7
|
+
Object.defineProperty(exports, "moment", {
|
|
8
8
|
enumerable: true,
|
|
9
9
|
get: function get() {
|
|
10
|
-
return
|
|
10
|
+
return _moment["default"];
|
|
11
11
|
}
|
|
12
12
|
});
|
|
13
|
-
|
|
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"));
|