@wavemaker/react-runtime 11.15.2-rc.64737 → 11.15.4-rc.250
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 +204 -158
- 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
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.setWidgetPageIndex = exports.setWidgetItem = exports.setWidgetIndexWithContext = exports.setWidgetIndex = void 0;
|
|
7
|
+
var _lodashEs = require("lodash-es");
|
|
8
|
+
/**
|
|
9
|
+
* Sets the $index property on widget instance based on item position in items array
|
|
10
|
+
*
|
|
11
|
+
* @param widgetInstance - The widget instance (proxy object from useWidgetProxy)
|
|
12
|
+
* @param items - Array of list items
|
|
13
|
+
* @param item - The current item to find index for
|
|
14
|
+
*/
|
|
15
|
+
var setWidgetIndex = exports.setWidgetIndex = function setWidgetIndex(widgetInstance, items, item) {
|
|
16
|
+
if (!widgetInstance || !item) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
var instance = widgetInstance;
|
|
20
|
+
var itemIndex = (0, _lodashEs.findIndex)(items, function (i) {
|
|
21
|
+
return i === item;
|
|
22
|
+
});
|
|
23
|
+
instance.$index = itemIndex;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Sets the $index property for pagination-based callbacks (page number converted to 0-based index)
|
|
28
|
+
*
|
|
29
|
+
* @param widgetInstance - The widget instance
|
|
30
|
+
* @param page - The page number (1-based)
|
|
31
|
+
*/
|
|
32
|
+
var setWidgetPageIndex = exports.setWidgetPageIndex = function setWidgetPageIndex(widgetInstance, page) {
|
|
33
|
+
if (!widgetInstance) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
var instance = widgetInstance;
|
|
37
|
+
var pageIndex = page - 1; // Page index is 1-based, convert to 0-based
|
|
38
|
+
instance.$index = pageIndex;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Sets both $index and context on widget instance (used for selection operations)
|
|
43
|
+
*
|
|
44
|
+
* @param widgetInstance - The widget instance
|
|
45
|
+
* @param items - Array of list items
|
|
46
|
+
* @param selectedItem - The selected item
|
|
47
|
+
*/
|
|
48
|
+
var setWidgetIndexWithContext = exports.setWidgetIndexWithContext = function setWidgetIndexWithContext(widgetInstance, items, selectedItem) {
|
|
49
|
+
if (!widgetInstance || !selectedItem) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
var instance = widgetInstance;
|
|
53
|
+
var itemIndex = items.findIndex(function (item) {
|
|
54
|
+
return item === selectedItem;
|
|
55
|
+
});
|
|
56
|
+
instance.$index = itemIndex;
|
|
57
|
+
instance.context = {
|
|
58
|
+
$index: itemIndex,
|
|
59
|
+
$count: items.length,
|
|
60
|
+
$implicit: selectedItem
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Sets item property on widget instance along with $index
|
|
66
|
+
* Used in click handlers where we need to store the current item
|
|
67
|
+
*
|
|
68
|
+
* @param widgetInstance - The widget instance
|
|
69
|
+
* @param items - Array of list items
|
|
70
|
+
* @param item - The current item
|
|
71
|
+
*/
|
|
72
|
+
var setWidgetItem = exports.setWidgetItem = function setWidgetItem(widgetInstance, items, item) {
|
|
73
|
+
if (!widgetInstance || !item) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
var instance = widgetInstance;
|
|
77
|
+
delete instance._wmListItemId;
|
|
78
|
+
instance.item = item;
|
|
79
|
+
instance.$index = (0, _lodashEs.findIndex)(items, function (i) {
|
|
80
|
+
return i === item;
|
|
81
|
+
});
|
|
82
|
+
};
|
|
@@ -98,6 +98,7 @@ var BasicPagination = exports.BasicPagination = function BasicPagination(_ref) {
|
|
|
98
98
|
ref: paginationRef,
|
|
99
99
|
component: "nav",
|
|
100
100
|
role: "navigation",
|
|
101
|
+
className: "pagination basic",
|
|
101
102
|
"aria-label": "Showing Page ".concat(currentPage, " of ").concat(pageCount, " pages"),
|
|
102
103
|
sx: {
|
|
103
104
|
// Hide MUI SVG icons for navigation buttons since CSS ::before will provide the icons
|
|
@@ -13,6 +13,7 @@ var _Select = _interopRequireDefault(require("@mui/material/Select"));
|
|
|
13
13
|
var _MenuItem = _interopRequireDefault(require("@mui/material/MenuItem"));
|
|
14
14
|
var _FormControl = _interopRequireDefault(require("@mui/material/FormControl"));
|
|
15
15
|
var _constants = require("../../list/utils/constants");
|
|
16
|
+
var _store = require("@wavemaker/react-runtime/store");
|
|
16
17
|
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
18
|
var __jsx = _react["default"].createElement;
|
|
18
19
|
var PageSizeSelectorComponent = function PageSizeSelectorComponent(_ref) {
|
|
@@ -26,6 +27,12 @@ var PageSizeSelectorComponent = function PageSizeSelectorComponent(_ref) {
|
|
|
26
27
|
dataSize = _ref$dataSize === void 0 ? 0 : _ref$dataSize,
|
|
27
28
|
paginationMeta = _ref.paginationMeta,
|
|
28
29
|
onPageSizeChange = _ref.onPageSizeChange;
|
|
30
|
+
// Get localized strings from store with fallback to APP_LOCALE constant
|
|
31
|
+
var appLocale = (0, _store.useAppSelector)(function (state) {
|
|
32
|
+
return state.i18n.appLocale;
|
|
33
|
+
});
|
|
34
|
+
var itemsPerPageLabel = (appLocale === null || appLocale === void 0 ? void 0 : appLocale.LABEL_ITEMS_PER_PAGE) || _constants.APP_LOCALE.LABEL_ITEMS_PER_PAGE;
|
|
35
|
+
|
|
29
36
|
// Parse page size options and include paginationMeta.size if available
|
|
30
37
|
var options = (0, _react.useMemo)(function () {
|
|
31
38
|
var parsedOptions = pagesizeoptions.split(",").map(function (opt) {
|
|
@@ -89,8 +96,8 @@ var PageSizeSelectorComponent = function PageSizeSelectorComponent(_ref) {
|
|
|
89
96
|
color: "text.primary",
|
|
90
97
|
whiteSpace: "nowrap"
|
|
91
98
|
},
|
|
92
|
-
title:
|
|
93
|
-
},
|
|
99
|
+
title: itemsPerPageLabel
|
|
100
|
+
}, itemsPerPageLabel, " :"), __jsx(_FormControl["default"], {
|
|
94
101
|
size: "small",
|
|
95
102
|
sx: {
|
|
96
103
|
minWidth: 70,
|
|
@@ -156,7 +163,8 @@ var PageSizeSelectorComponent = function PageSizeSelectorComponent(_ref) {
|
|
|
156
163
|
display: "flex",
|
|
157
164
|
alignItems: "center",
|
|
158
165
|
gap: 0.5
|
|
159
|
-
}
|
|
166
|
+
},
|
|
167
|
+
className: "item-range"
|
|
160
168
|
}, __jsx(_Typography["default"], {
|
|
161
169
|
sx: {
|
|
162
170
|
fontSize: "14px",
|
|
@@ -11,7 +11,6 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
11
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _clsx = _interopRequireDefault(require("clsx"));
|
|
13
13
|
var _Box = _interopRequireDefault(require("@mui/material/Box"));
|
|
14
|
-
var _withBaseWrapper = require("@wavemaker/react-runtime/higherOrder/withBaseWrapper");
|
|
15
14
|
var _hooks = require("./hooks");
|
|
16
15
|
var _components = require("./components");
|
|
17
16
|
var _constants = require("../list/utils/constants");
|
|
@@ -437,4 +436,4 @@ var WmPagination = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
|
437
436
|
}, renderPaginationContent());
|
|
438
437
|
});
|
|
439
438
|
WmPagination.displayName = "WmPagination";
|
|
440
|
-
var _default = exports["default"] =
|
|
439
|
+
var _default = exports["default"] = WmPagination;
|
|
@@ -25,7 +25,6 @@ var useServerSideSorting = exports.useServerSideSorting = function useServerSide
|
|
|
25
25
|
onBeforefilter = _ref.onBeforefilter,
|
|
26
26
|
filterFields = _ref.filterFields,
|
|
27
27
|
logicalOp = _ref.logicalOp,
|
|
28
|
-
setLoading = _ref.setLoading,
|
|
29
28
|
listener = _ref.listener,
|
|
30
29
|
name = _ref.name;
|
|
31
30
|
var prevSortingRef = (0, _react.useRef)(sorting);
|
|
@@ -61,18 +60,17 @@ var useServerSideSorting = exports.useServerSideSorting = function useServerSide
|
|
|
61
60
|
}
|
|
62
61
|
return _context.abrupt("return");
|
|
63
62
|
case 2:
|
|
64
|
-
|
|
65
|
-
_context.prev = 3;
|
|
63
|
+
_context.prev = 2;
|
|
66
64
|
orderBy = convertSortingToOrderBy(sorting); // Use forcePage if provided (for sorting changes), otherwise use current page
|
|
67
65
|
currentPage = forcePage !== undefined ? forcePage : pageIndex + 1; // Convert 0-based to 1-based
|
|
68
|
-
_context.next =
|
|
66
|
+
_context.next = 7;
|
|
69
67
|
return (0, _crudHandlers.refreshDataSource)(datasource, {
|
|
70
68
|
orderBy: orderBy,
|
|
71
69
|
page: currentPage || 1,
|
|
72
70
|
filterFields: filterFields || {},
|
|
73
71
|
condition: logicalOp || ""
|
|
74
72
|
});
|
|
75
|
-
case
|
|
73
|
+
case 7:
|
|
76
74
|
response = _context.sent;
|
|
77
75
|
// Handle response data - always update dataset even if empty
|
|
78
76
|
responseData = []; // Handle different response formats
|
|
@@ -83,11 +81,11 @@ var useServerSideSorting = exports.useServerSideSorting = function useServerSide
|
|
|
83
81
|
// Add unique row IDs to the server response data
|
|
84
82
|
dataWithIds = (0, _utils.addUniqueRowIds)(responseData);
|
|
85
83
|
setInternalDataset(dataWithIds);
|
|
86
|
-
_context.next =
|
|
84
|
+
_context.next = 19;
|
|
87
85
|
break;
|
|
88
|
-
case
|
|
89
|
-
_context.prev =
|
|
90
|
-
_context.t0 = _context["catch"](
|
|
86
|
+
case 14:
|
|
87
|
+
_context.prev = 14;
|
|
88
|
+
_context.t0 = _context["catch"](2);
|
|
91
89
|
console.error("Error fetching sorted data:", _context.t0);
|
|
92
90
|
if (showToast) {
|
|
93
91
|
showToast("Failed to sort data", "Error");
|
|
@@ -96,20 +94,16 @@ var useServerSideSorting = exports.useServerSideSorting = function useServerSide
|
|
|
96
94
|
widget = name ? listener === null || listener === void 0 || (_listener$Widgets = listener.Widgets) === null || _listener$Widgets === void 0 ? void 0 : _listener$Widgets[name] : undefined;
|
|
97
95
|
onError(null, widget, _context.t0, "sort");
|
|
98
96
|
}
|
|
99
|
-
case
|
|
100
|
-
_context.prev = 20;
|
|
101
|
-
setLoading(false);
|
|
102
|
-
return _context.finish(20);
|
|
103
|
-
case 23:
|
|
97
|
+
case 19:
|
|
104
98
|
case "end":
|
|
105
99
|
return _context.stop();
|
|
106
100
|
}
|
|
107
|
-
}, _callee, null, [[
|
|
101
|
+
}, _callee, null, [[2, 14]]);
|
|
108
102
|
}));
|
|
109
103
|
return function (_x) {
|
|
110
104
|
return _ref2.apply(this, arguments);
|
|
111
105
|
};
|
|
112
|
-
}(), [datasource, isServerSideSorting, sorting, pageIndex, convertSortingToOrderBy, setInternalDataset, showToast, onError, filterFields, logicalOp,
|
|
106
|
+
}(), [datasource, isServerSideSorting, sorting, pageIndex, convertSortingToOrderBy, setInternalDataset, showToast, onError, filterFields, logicalOp, listener, name]);
|
|
113
107
|
|
|
114
108
|
// Debounced version to handle rapid successive calls
|
|
115
109
|
var fetchSortedData = (0, _useDebounce.useDebounceCallback)(fetchSortedDataImpl, 100);
|
|
@@ -35,7 +35,7 @@ var __jsx = _react["default"].createElement;
|
|
|
35
35
|
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; }
|
|
36
36
|
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; }
|
|
37
37
|
var WmTableComponent = exports.WmTableComponent = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
38
|
-
var _listener$Widgets, _datasource$paginatio2, _datasource$paginatio4;
|
|
38
|
+
var _listener$App, _listener$Widgets, _datasource$paginatio2, _datasource$paginatio4;
|
|
39
39
|
var name = props.name,
|
|
40
40
|
_props$dataset = props.dataset,
|
|
41
41
|
dataset = _props$dataset === void 0 ? [] : _props$dataset,
|
|
@@ -157,23 +157,15 @@ var WmTableComponent = exports.WmTableComponent = /*#__PURE__*/(0, _react.memo)(
|
|
|
157
157
|
onBeforeexport = props.onBeforeexport,
|
|
158
158
|
onAfterexport = props.onAfterexport,
|
|
159
159
|
rest = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
|
160
|
-
var
|
|
161
|
-
loading = _useState[0],
|
|
162
|
-
setLoading = _useState[1];
|
|
160
|
+
var loading = (datasource === null || datasource === void 0 ? void 0 : datasource.loading) || false;
|
|
163
161
|
var prevDatasetRef = (0, _react.useRef)(dataset);
|
|
164
162
|
var prevSelectedRow = (0, _react.useRef)(null);
|
|
165
163
|
var tableApisRegistered = (0, _react.useRef)(false);
|
|
166
|
-
(0, _react.useEffect)(function () {
|
|
167
|
-
// Sync local loading state with datasource loading
|
|
168
|
-
if ((datasource === null || datasource === void 0 ? void 0 : datasource.loading) !== undefined) {
|
|
169
|
-
setLoading(datasource.loading);
|
|
170
|
-
}
|
|
171
|
-
}, [datasource === null || datasource === void 0 ? void 0 : datasource.loading]);
|
|
172
164
|
|
|
173
165
|
// State for accumulated data in Scroll and On-Demand navigation modes
|
|
174
|
-
var
|
|
175
|
-
accumulatedData =
|
|
176
|
-
setAccumulatedData =
|
|
166
|
+
var _useState = (0, _react.useState)([]),
|
|
167
|
+
accumulatedData = _useState[0],
|
|
168
|
+
setAccumulatedData = _useState[1];
|
|
177
169
|
|
|
178
170
|
// Callback to receive accumulated data from pagination (for Scroll and On-Demand)
|
|
179
171
|
var handleAccumulatedDataUpdate = (0, _react.useCallback)(function (data) {
|
|
@@ -194,13 +186,14 @@ var WmTableComponent = exports.WmTableComponent = /*#__PURE__*/(0, _react.memo)(
|
|
|
194
186
|
setAccumulatedData([]);
|
|
195
187
|
}
|
|
196
188
|
}, [navigation]);
|
|
189
|
+
var notifyApp = listener === null || listener === void 0 || (_listener$App = listener.App) === null || _listener$App === void 0 ? void 0 : _listener$App.notifyApp;
|
|
197
190
|
|
|
198
191
|
// Create a centralized toast notification function
|
|
199
192
|
var showToast = (0, _react.useCallback)(function (message, type) {
|
|
200
|
-
if (
|
|
201
|
-
|
|
193
|
+
if (notifyApp) {
|
|
194
|
+
notifyApp(message, type);
|
|
202
195
|
}
|
|
203
|
-
}, [
|
|
196
|
+
}, [notifyApp]);
|
|
204
197
|
|
|
205
198
|
// Determine if we're using server-side pagination
|
|
206
199
|
// Check if datasource is API-aware (server-side) rather than checking runtime pagination data
|
|
@@ -276,7 +269,7 @@ var WmTableComponent = exports.WmTableComponent = /*#__PURE__*/(0, _react.memo)(
|
|
|
276
269
|
var persisted = (0, _utils.getTableState)(name, effectiveStateHandler);
|
|
277
270
|
|
|
278
271
|
// Determine the actual page size (original datasource page size)
|
|
279
|
-
var actualPageSize
|
|
272
|
+
var actualPageSize;
|
|
280
273
|
if ((persisted === null || persisted === void 0 ? void 0 : persisted.actualpagesize) !== undefined) {
|
|
281
274
|
// If we have a persisted actualPageSize, use it (it should never change)
|
|
282
275
|
actualPageSize = persisted.actualpagesize;
|
|
@@ -312,7 +305,7 @@ var WmTableComponent = exports.WmTableComponent = /*#__PURE__*/(0, _react.memo)(
|
|
|
312
305
|
}
|
|
313
306
|
return {
|
|
314
307
|
initialPage: 1,
|
|
315
|
-
initialPageSize: actualPageSize,
|
|
308
|
+
initialPageSize: actualPageSize || pagesize,
|
|
316
309
|
initialActualPageSize: pagesize,
|
|
317
310
|
initialSearchState: undefined,
|
|
318
311
|
initialSortState: undefined
|
|
@@ -327,6 +320,9 @@ var WmTableComponent = exports.WmTableComponent = /*#__PURE__*/(0, _react.memo)(
|
|
|
327
320
|
// Create a ref to hold the table instance
|
|
328
321
|
var tableRef = _react["default"].useRef(null);
|
|
329
322
|
|
|
323
|
+
// Create a ref to hold the table container DOM element
|
|
324
|
+
var tableContainerRef = _react["default"].useRef(null);
|
|
325
|
+
|
|
330
326
|
// Track previous page index to detect actual page changes
|
|
331
327
|
var prevPageIndexRef = (0, _react.useRef)(-1);
|
|
332
328
|
|
|
@@ -537,7 +533,7 @@ var WmTableComponent = exports.WmTableComponent = /*#__PURE__*/(0, _react.memo)(
|
|
|
537
533
|
}, [paginationState.pageIndex, isAddingNewRow, cancelEditing]);
|
|
538
534
|
|
|
539
535
|
// Track sorting and column sizing states
|
|
540
|
-
var
|
|
536
|
+
var _useState2 = (0, _react.useState)(function () {
|
|
541
537
|
// Convert initialSortState to TanStack Table sorting format
|
|
542
538
|
if (initialSortState) {
|
|
543
539
|
return [{
|
|
@@ -547,14 +543,14 @@ var WmTableComponent = exports.WmTableComponent = /*#__PURE__*/(0, _react.memo)(
|
|
|
547
543
|
}
|
|
548
544
|
return [];
|
|
549
545
|
}),
|
|
550
|
-
sorting =
|
|
551
|
-
setSorting =
|
|
552
|
-
var
|
|
553
|
-
columnSizing =
|
|
554
|
-
setColumnSizing =
|
|
555
|
-
var
|
|
556
|
-
isResizing =
|
|
557
|
-
setIsResizing =
|
|
546
|
+
sorting = _useState2[0],
|
|
547
|
+
setSorting = _useState2[1];
|
|
548
|
+
var _useState3 = (0, _react.useState)({}),
|
|
549
|
+
columnSizing = _useState3[0],
|
|
550
|
+
setColumnSizing = _useState3[1];
|
|
551
|
+
var _useState4 = (0, _react.useState)(false),
|
|
552
|
+
isResizing = _useState4[0],
|
|
553
|
+
setIsResizing = _useState4[1];
|
|
558
554
|
|
|
559
555
|
// Column selection handlers - just call the external callbacks
|
|
560
556
|
// The class toggling is handled directly in TableHeaderComponent
|
|
@@ -672,31 +668,31 @@ var WmTableComponent = exports.WmTableComponent = /*#__PURE__*/(0, _react.memo)(
|
|
|
672
668
|
|
|
673
669
|
//column proxy changes
|
|
674
670
|
var columnsStateRef = (0, _react.useRef)(columns);
|
|
675
|
-
var
|
|
676
|
-
columnsVersion =
|
|
677
|
-
setColumnsVersion =
|
|
671
|
+
var _useState5 = (0, _react.useState)(0),
|
|
672
|
+
columnsVersion = _useState5[0],
|
|
673
|
+
setColumnsVersion = _useState5[1];
|
|
678
674
|
var parentFormColumns = (listener === null || listener === void 0 || (_listener$Widgets = listener.Widgets) === null || _listener$Widgets === void 0 || (_listener$Widgets = _listener$Widgets[parentForm]) === null || _listener$Widgets === void 0 ? void 0 : _listener$Widgets.dataoutput) || {};
|
|
679
|
-
var
|
|
680
|
-
columnOverrides =
|
|
681
|
-
setColumnOverrides =
|
|
675
|
+
var _useState6 = (0, _react.useState)({}),
|
|
676
|
+
columnOverrides = _useState6[0],
|
|
677
|
+
setColumnOverrides = _useState6[1];
|
|
682
678
|
var applyOverride = (0, _react.useCallback)(function (index, key, value) {
|
|
683
679
|
setColumnOverrides(function (prev) {
|
|
684
680
|
return _objectSpread(_objectSpread({}, prev), {}, (0, _defineProperty2["default"])({}, index, _objectSpread(_objectSpread({}, prev[index] || {}), {}, (0, _defineProperty2["default"])({}, key, value))));
|
|
685
681
|
});
|
|
686
682
|
}, []);
|
|
687
|
-
var
|
|
688
|
-
summaryRowDefs =
|
|
689
|
-
setSummaryRowDefs =
|
|
690
|
-
var
|
|
691
|
-
summaryRowEnabled =
|
|
692
|
-
setSummaryRowEnabled =
|
|
693
|
-
var
|
|
694
|
-
summaryRowDefObjects =
|
|
695
|
-
setSummaryRowDefObjects =
|
|
683
|
+
var _useState7 = (0, _react.useState)([]),
|
|
684
|
+
summaryRowDefs = _useState7[0],
|
|
685
|
+
setSummaryRowDefs = _useState7[1];
|
|
686
|
+
var _useState8 = (0, _react.useState)(false),
|
|
687
|
+
summaryRowEnabled = _useState8[0],
|
|
688
|
+
setSummaryRowEnabled = _useState8[1];
|
|
689
|
+
var _useState9 = (0, _react.useState)([]),
|
|
690
|
+
summaryRowDefObjects = _useState9[0],
|
|
691
|
+
setSummaryRowDefObjects = _useState9[1];
|
|
696
692
|
// Store column show property for summary rows: [rowIndex][columnKey] => show boolean
|
|
697
|
-
var
|
|
698
|
-
summaryRowColumnShow =
|
|
699
|
-
setSummaryRowColumnShow =
|
|
693
|
+
var _useState0 = (0, _react.useState)({}),
|
|
694
|
+
summaryRowColumnShow = _useState0[0],
|
|
695
|
+
setSummaryRowColumnShow = _useState0[1];
|
|
700
696
|
var setSummaryRowDef = (0, _react.useCallback)(function (columnKey, data, rowIndex, refresh, show) {
|
|
701
697
|
setSummaryRowDefs(function (prev) {
|
|
702
698
|
var newDefs = (0, _toConsumableArray2["default"])(prev);
|
|
@@ -901,7 +897,6 @@ var WmTableComponent = exports.WmTableComponent = /*#__PURE__*/(0, _react.memo)(
|
|
|
901
897
|
pageIndex: table.getState().pagination.pageIndex,
|
|
902
898
|
onError: onError,
|
|
903
899
|
onBeforefilter: onBeforefilter,
|
|
904
|
-
setLoading: setLoading,
|
|
905
900
|
filterFields: memoizedFilterFields,
|
|
906
901
|
logicalOp: memoizedLogicalOp,
|
|
907
902
|
listener: listener,
|
|
@@ -1113,6 +1108,10 @@ var WmTableComponent = exports.WmTableComponent = /*#__PURE__*/(0, _react.memo)(
|
|
|
1113
1108
|
// Use requestAnimationFrame to ensure DOM is fully painted
|
|
1114
1109
|
requestAnimationFrame(function () {
|
|
1115
1110
|
if (onDatarender) {
|
|
1111
|
+
// Set nativeElement to the table container DOM element
|
|
1112
|
+
if (listener.Widgets[name] && tableContainerRef.current) {
|
|
1113
|
+
listener.Widgets[name].nativeElement = tableContainerRef.current;
|
|
1114
|
+
}
|
|
1116
1115
|
onDatarender(listener === null || listener === void 0 ? void 0 : listener.Widgets[name],
|
|
1117
1116
|
// widget reference to match Angular format
|
|
1118
1117
|
{
|
|
@@ -1386,7 +1385,7 @@ var WmTableComponent = exports.WmTableComponent = /*#__PURE__*/(0, _react.memo)(
|
|
|
1386
1385
|
return _context2.stop();
|
|
1387
1386
|
}
|
|
1388
1387
|
}, _callee2, null, [[4, 23]]);
|
|
1389
|
-
})), [datasource, isServerSidePagination(), setInternalDataset, showToast, onError,
|
|
1388
|
+
})), [datasource, isServerSidePagination(), setInternalDataset, showToast, onError, name]); // Removed 'table' from dependencies to prevent recreation
|
|
1390
1389
|
|
|
1391
1390
|
var tableApis = {
|
|
1392
1391
|
columns: columnsProxy,
|
|
@@ -1399,14 +1398,6 @@ var WmTableComponent = exports.WmTableComponent = /*#__PURE__*/(0, _react.memo)(
|
|
|
1399
1398
|
selectPageSize: selectPageSize
|
|
1400
1399
|
};
|
|
1401
1400
|
|
|
1402
|
-
// Expose table API through listener
|
|
1403
|
-
(0, _react.useEffect)(function () {
|
|
1404
|
-
if (listener && listener.onChange && !tableApisRegistered.current) {
|
|
1405
|
-
listener.onChange(name, tableApis);
|
|
1406
|
-
tableApisRegistered.current = true;
|
|
1407
|
-
}
|
|
1408
|
-
}, []);
|
|
1409
|
-
|
|
1410
1401
|
// Register table with parent form's formWidgets when parentForm is present
|
|
1411
1402
|
(0, _react.useEffect)(function () {
|
|
1412
1403
|
var _listener$Widgets5;
|
|
@@ -1461,6 +1452,13 @@ var WmTableComponent = exports.WmTableComponent = /*#__PURE__*/(0, _react.memo)(
|
|
|
1461
1452
|
// Update only if changed
|
|
1462
1453
|
if (!(0, _lodashEs.isEqual)(prevSelectedRow.current, selecteditem)) {
|
|
1463
1454
|
prevSelectedRow.current = selecteditem;
|
|
1455
|
+
if (tableApisRegistered.current) {
|
|
1456
|
+
listener.onChange(name, {
|
|
1457
|
+
selecteditem: selecteditem
|
|
1458
|
+
});
|
|
1459
|
+
return;
|
|
1460
|
+
}
|
|
1461
|
+
tableApisRegistered.current = true;
|
|
1464
1462
|
listener.onChange(name, _objectSpread(_objectSpread({}, tableApis), {}, {
|
|
1465
1463
|
selecteditem: selecteditem
|
|
1466
1464
|
}));
|
|
@@ -1477,6 +1475,7 @@ var WmTableComponent = exports.WmTableComponent = /*#__PURE__*/(0, _react.memo)(
|
|
|
1477
1475
|
className: "app-livegrid",
|
|
1478
1476
|
name: name
|
|
1479
1477
|
}, __jsx(_material.Box, {
|
|
1478
|
+
ref: tableContainerRef,
|
|
1480
1479
|
className: "app-grid app-panel panel app-datagrid ".concat(className).trim(),
|
|
1481
1480
|
name: name,
|
|
1482
1481
|
editmode: editmode,
|
|
@@ -1660,15 +1659,14 @@ var WmTableComponent = exports.WmTableComponent = /*#__PURE__*/(0, _react.memo)(
|
|
|
1660
1659
|
// If all checks pass, consider components equal (skip re-render)
|
|
1661
1660
|
return true;
|
|
1662
1661
|
});
|
|
1663
|
-
WmTableComponent.displayName = "WmTableComponent";
|
|
1664
1662
|
|
|
1665
1663
|
// Wrapper component that provides EditedRowsContext to WmTableComponent
|
|
1666
1664
|
var WmTableWithProvider = function WmTableWithProvider(props) {
|
|
1667
1665
|
return __jsx(_useEditedRows.EditedRowsProvider, null, __jsx(WmTableComponent, props));
|
|
1668
1666
|
};
|
|
1667
|
+
WmTableWithProvider.displayName = "WmTable";
|
|
1669
1668
|
|
|
1670
1669
|
// @ts-ignore
|
|
1671
1670
|
var WmTable = (0, _withBaseWrapper["default"])(WmTableWithProvider);
|
|
1672
|
-
// Override the displayName set by withBaseWrapper
|
|
1673
1671
|
WmTable.displayName = "WmTable";
|
|
1674
1672
|
var _default = exports["default"] = WmTable;
|
|
@@ -89,7 +89,6 @@ var buildSelectionColumns = exports.buildSelectionColumns = function buildSelect
|
|
|
89
89
|
// Use selectedRowIds and internalDataset directly for reliable state
|
|
90
90
|
var selectedCount = selectedRowIds.length;
|
|
91
91
|
var isAllSelected = selectedCount > 0 && selectedCount === internalDataset.length;
|
|
92
|
-
var isIndeterminate = selectedCount > 0 && selectedCount < internalDataset.length;
|
|
93
92
|
return __jsx(_material.Box, {
|
|
94
93
|
sx: {
|
|
95
94
|
display: "flex",
|
|
@@ -98,20 +97,16 @@ var buildSelectionColumns = exports.buildSelectionColumns = function buildSelect
|
|
|
98
97
|
}
|
|
99
98
|
}, __jsx(_material.Box, {
|
|
100
99
|
className: "app-checkbox checkbox"
|
|
101
|
-
}, __jsx(_material.
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}
|
|
112
|
-
}),
|
|
113
|
-
label: "",
|
|
114
|
-
className: "caption"
|
|
100
|
+
}, __jsx(_material.Checkbox, {
|
|
101
|
+
checked: isAllSelected,
|
|
102
|
+
indeterminate: false,
|
|
103
|
+
onChange: function onChange(e) {
|
|
104
|
+
return handleSelectAll(e.target.checked);
|
|
105
|
+
},
|
|
106
|
+
size: "small",
|
|
107
|
+
inputProps: {
|
|
108
|
+
"aria-label": "Select all rows"
|
|
109
|
+
}
|
|
115
110
|
})));
|
|
116
111
|
},
|
|
117
112
|
cell: function cell(_ref3) {
|
|
@@ -129,23 +124,19 @@ var buildSelectionColumns = exports.buildSelectionColumns = function buildSelect
|
|
|
129
124
|
placement: "top"
|
|
130
125
|
}, __jsx(_material.Box, {
|
|
131
126
|
className: "app-checkbox checkbox"
|
|
132
|
-
}, __jsx(_material.
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
size: "small"
|
|
146
|
-
}),
|
|
147
|
-
label: "",
|
|
148
|
-
className: "caption"
|
|
127
|
+
}, __jsx(_material.Checkbox, {
|
|
128
|
+
checked: isSelected,
|
|
129
|
+
onChange: function onChange(e) {
|
|
130
|
+
return handleMultiSelection(rowId, row.original, e.target.checked);
|
|
131
|
+
},
|
|
132
|
+
value: rowId,
|
|
133
|
+
name: "gridMultiSelect",
|
|
134
|
+
inputProps: {
|
|
135
|
+
"aria-label": multiselectarialabel,
|
|
136
|
+
role: "checkbox",
|
|
137
|
+
"aria-live": "assertive"
|
|
138
|
+
},
|
|
139
|
+
size: "small"
|
|
149
140
|
}))), isSelected ? __jsx("span", {
|
|
150
141
|
className: "sr-only",
|
|
151
142
|
"aria-live": "assertive"
|
|
@@ -703,8 +703,13 @@ var INTERNAL_PROPERTIES = exports.INTERNAL_PROPERTIES = ["_wmTableRowId",
|
|
|
703
703
|
// Helper function to get property values
|
|
704
704
|
"rowOperations",
|
|
705
705
|
// Internal column for row action buttons
|
|
706
|
-
"rowActions"
|
|
707
|
-
|
|
706
|
+
"rowActions",
|
|
707
|
+
// Internal row actions property
|
|
708
|
+
"_wmListItemId",
|
|
709
|
+
// Internal list item identifier
|
|
710
|
+
"selected",
|
|
711
|
+
// Internal selected property
|
|
712
|
+
"_wm"];
|
|
708
713
|
|
|
709
714
|
/**
|
|
710
715
|
* Cleans row data by removing internal properties
|
|
@@ -105,6 +105,12 @@ var WmDialog = exports.WmDialog = /*#__PURE__*/(0, _react.memo)(function (props)
|
|
|
105
105
|
disableEscapeKeyDown: modal && props.closable === false,
|
|
106
106
|
fullWidth: true,
|
|
107
107
|
keepMounted: true,
|
|
108
|
+
hideBackdrop: false,
|
|
109
|
+
BackdropProps: {
|
|
110
|
+
sx: {
|
|
111
|
+
pointerEvents: "auto"
|
|
112
|
+
}
|
|
113
|
+
},
|
|
108
114
|
sx: {
|
|
109
115
|
"& .MuiDialog-scrollPaper": _objectSpread({}, props.sheet && {
|
|
110
116
|
borderRadius: 0
|
|
@@ -100,8 +100,11 @@ var WmCheckbox = exports.WmCheckbox = /*#__PURE__*/(0, _react.memo)(function (pr
|
|
|
100
100
|
});
|
|
101
101
|
}
|
|
102
102
|
if (onChange) {
|
|
103
|
-
|
|
104
|
-
|
|
103
|
+
var _window;
|
|
104
|
+
(_window = window) === null || _window === void 0 || _window.queueMicrotask(function () {
|
|
105
|
+
// Pass the actual value in the onChange callback
|
|
106
|
+
onChange(event, listener === null || listener === void 0 ? void 0 : listener.Widgets[name], newValue, actualValue !== null && actualValue !== void 0 ? actualValue : uncheckedvalue);
|
|
107
|
+
});
|
|
105
108
|
}
|
|
106
109
|
}, [checkedvalue, uncheckedvalue, onChange, listener, name, actualValue]);
|
|
107
110
|
var handleBlur = (0, _react.useCallback)(function (event) {
|
|
@@ -72,11 +72,23 @@ var DatePickerPopover = function DatePickerPopover(_ref) {
|
|
|
72
72
|
var renderCalendarView = function renderCalendarView() {
|
|
73
73
|
var minDateMoment = restProps.mindate ? (0, _momentTimezone["default"])(getDateObj(restProps.mindate)) : undefined;
|
|
74
74
|
var maxDateMoment = restProps.maxdate ? (0, _momentTimezone["default"])(getDateObj(restProps.maxdate)) : undefined;
|
|
75
|
+
|
|
76
|
+
// Disable prev/next arrows when at min/max month
|
|
77
|
+
var isAtMinMonth = (minDateMoment === null || minDateMoment === void 0 ? void 0 : minDateMoment.isValid()) && calendarDate.isValid() && calendarDate.clone().startOf("month").isSameOrBefore(minDateMoment.clone().startOf("month"));
|
|
78
|
+
var isAtMaxMonth = (maxDateMoment === null || maxDateMoment === void 0 ? void 0 : maxDateMoment.isValid()) && calendarDate.isValid() && calendarDate.clone().startOf("month").isSameOrAfter(maxDateMoment.clone().startOf("month"));
|
|
75
79
|
var commonProps = {
|
|
76
80
|
minDate: minDateMoment,
|
|
77
81
|
maxDate: maxDateMoment,
|
|
78
82
|
disabled: isNavigationDisabled
|
|
79
83
|
};
|
|
84
|
+
var dateCalendarSlotProps = {
|
|
85
|
+
previousIconButton: {
|
|
86
|
+
disabled: isAtMinMonth
|
|
87
|
+
},
|
|
88
|
+
nextIconButton: {
|
|
89
|
+
disabled: isAtMaxMonth
|
|
90
|
+
}
|
|
91
|
+
};
|
|
80
92
|
switch (viewmode) {
|
|
81
93
|
case "year":
|
|
82
94
|
return __jsx(_styled.StyledYearCalendar, (0, _extends2["default"])({
|
|
@@ -107,7 +119,8 @@ var DatePickerPopover = function DatePickerPopover(_ref) {
|
|
|
107
119
|
},
|
|
108
120
|
dayOfWeekFormatter: function dayOfWeekFormatter(date) {
|
|
109
121
|
return date.locale(currentLocale).format("ddd");
|
|
110
|
-
}
|
|
122
|
+
},
|
|
123
|
+
slotProps: dateCalendarSlotProps
|
|
111
124
|
}, commonProps));
|
|
112
125
|
}
|
|
113
126
|
default:
|
|
@@ -131,7 +144,8 @@ var DatePickerPopover = function DatePickerPopover(_ref) {
|
|
|
131
144
|
},
|
|
132
145
|
dayOfWeekFormatter: function dayOfWeekFormatter(date) {
|
|
133
146
|
return date.locale(currentLocale).format("ddd");
|
|
134
|
-
}
|
|
147
|
+
},
|
|
148
|
+
slotProps: dateCalendarSlotProps
|
|
135
149
|
}, commonProps));
|
|
136
150
|
default:
|
|
137
151
|
return __jsx(_styled.StyledDateCalendar, (0, _extends2["default"])({
|
|
@@ -141,6 +155,7 @@ var DatePickerPopover = function DatePickerPopover(_ref) {
|
|
|
141
155
|
displayWeekNumber: showweeks,
|
|
142
156
|
views: ["day", "year", "month"],
|
|
143
157
|
view: calendarViewMode,
|
|
158
|
+
slotProps: dateCalendarSlotProps,
|
|
144
159
|
onViewChange: function onViewChange(newView) {
|
|
145
160
|
if (!isNavigationDisabled && newView) {
|
|
146
161
|
setCalendarViewMode(newView);
|