@wavemaker/react-runtime 11.14.2-rc.6311 → 11.15.0-1.246

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 (245) hide show
  1. package/actions/base-action.js +5 -7
  2. package/actions/login-action.js +7 -8
  3. package/actions/logout-action.js +5 -7
  4. package/actions/navigation-action.js +73 -18
  5. package/actions/notification-action.js +22 -8
  6. package/actions/timer-action.js +13 -15
  7. package/actions/toast.js +4 -2
  8. package/actions/toast.service.js +1 -2
  9. package/components/advanced/carousel/index.js +1 -1
  10. package/components/advanced/carousel/template.js +1 -1
  11. package/components/basic/anchor/index.js +31 -11
  12. package/components/basic/html/index.js +115 -24
  13. package/components/basic/icon/index.js +2 -1
  14. package/components/basic/iframe/index.js +2 -1
  15. package/components/basic/label/index.js +12 -9
  16. package/components/basic/message/index.js +12 -3
  17. package/components/basic/picture/index.js +11 -4
  18. package/components/basic/progress-bar/index.js +4 -1
  19. package/components/basic/progress-circle/index.js +34 -28
  20. package/components/basic/progress-circle/props.js +10 -2
  21. package/components/basic/richtexteditor/index.js +95 -94
  22. package/components/basic/search/index.js +401 -156
  23. package/components/basic/search/providers.js +126 -61
  24. package/components/basic/spinner/index.js +2 -1
  25. package/components/basic/tree/index.js +34 -34
  26. package/components/basic/tree/utils.js +10 -4
  27. package/components/chart/components/barColumnChart/index.js +36 -33
  28. package/components/chart/components/bubbleChart/index.js +35 -25
  29. package/components/chart/components/chartLegend/utils.js +2 -1
  30. package/components/chart/components/cumulativeLineChart/index.js +30 -26
  31. package/components/chart/components/lineAreaChart/index.js +50 -32
  32. package/components/chart/components/pieDonutChart/index.js +13 -4
  33. package/components/chart/hooks/useXAxisConfig.js +15 -8
  34. package/components/chart/index.js +223 -53
  35. package/components/chart/utils.js +12 -1
  36. package/components/constants.js +5 -2
  37. package/components/container/accordion/accordion-pane/index.js +17 -12
  38. package/components/container/accordion/index.js +9 -4
  39. package/components/container/alignment-utils.js +56 -1
  40. package/components/container/index.js +49 -20
  41. package/components/container/panel/components/panel-header/index.js +3 -4
  42. package/components/container/panel/index.js +15 -10
  43. package/components/container/repeat-template/index.js +33 -0
  44. package/components/container/tabs/index.js +83 -14
  45. package/components/container/tabs/tab-pane/index.js +33 -10
  46. package/components/container/tabs/utils.js +51 -0
  47. package/components/container/wizard/components/StepComponents.js +2 -1
  48. package/components/container/wizard/components/WizardStep.js +2 -1
  49. package/components/container/wizard/index.js +64 -35
  50. package/components/container/wizard/utils.js +46 -1
  51. package/components/container/wizard/wizard-step/index.js +11 -1
  52. package/components/data/card/card-content/index.js +1 -1
  53. package/components/data/form/base-form/index.js +985 -183
  54. package/components/data/form/base-form/props.js +3 -1
  55. package/components/data/form/base-form/utils.js +159 -1
  56. package/components/data/form/dynamic-fields/constant.js +53 -0
  57. package/components/data/form/dynamic-fields/index.js +10 -45
  58. package/components/data/form/dynamic-fields/utils.js +37 -2
  59. package/components/data/form/form-action/index.js +5 -4
  60. package/components/data/form/form-context.js +5 -1
  61. package/components/data/form/form-controller/utils.js +84 -0
  62. package/components/data/form/form-controller/validation-contrustor.js +402 -189
  63. package/components/data/form/form-controller/withFormController.js +191 -52
  64. package/components/data/form/form-field/base-field.js +67 -45
  65. package/components/data/form/form-field/index.js +28 -5
  66. package/components/data/form/form-header/index.js +3 -4
  67. package/components/data/form/index.js +20 -1
  68. package/components/data/list/components/ListDND.js +2 -1
  69. package/components/data/list/components/ListItem.js +6 -2
  70. package/components/data/list/components/ListItemWithTemplate.js +46 -2
  71. package/components/data/list/components/ListItems.js +17 -26
  72. package/components/data/list/components/ListPagination.js +3 -3
  73. package/components/data/list/components/StandardListItems.js +3 -4
  74. package/components/data/list/hooks/useListEffects.js +55 -14
  75. package/components/data/list/hooks/useListEventHandlers.js +3 -1
  76. package/components/data/list/hooks/useListState.js +3 -1
  77. package/components/data/list/hooks/usePaginatedGroupedData.js +18 -5
  78. package/components/data/list/index.js +74 -55
  79. package/components/data/list/utils/list-helpers.js +73 -35
  80. package/components/data/list/utils/list-widget-methods.js +138 -95
  81. package/components/data/live-filter/index.js +26 -15
  82. package/components/data/live-form/index.js +51 -18
  83. package/components/data/live-form/props.js +1 -1
  84. package/components/data/pagination/components/BasicPagination.js +71 -16
  85. package/components/data/pagination/components/PageSizeSelector.js +8 -3
  86. package/components/data/pagination/components/TotalRecords.js +1 -5
  87. package/components/data/pagination/hooks/usePagination.js +349 -66
  88. package/components/data/pagination/index.js +137 -19
  89. package/components/data/table/components/AddNewRow.js +5 -1
  90. package/components/data/table/components/EditableCell.js +2 -2
  91. package/components/data/table/components/RowCells.js +64 -0
  92. package/components/data/table/components/RowExpansionButton.js +2 -2
  93. package/components/data/table/components/SummaryCell.js +111 -0
  94. package/components/data/table/components/SummaryRow.js +54 -0
  95. package/components/data/table/components/SummaryRowFooter.js +46 -0
  96. package/components/data/table/components/TableBody.js +61 -59
  97. package/components/data/table/components/TableDataRow.js +109 -0
  98. package/components/data/table/components/TableFilters.js +225 -121
  99. package/components/data/table/components/TableHeader.js +291 -23
  100. package/components/data/table/components/TablePanelHeading.js +139 -8
  101. package/components/data/table/components/index.js +22 -1
  102. package/components/data/table/hooks/use-edited-rows.js +141 -0
  103. package/components/data/table/hooks/useCellState.js +5 -12
  104. package/components/data/table/hooks/useFormWidget.js +58 -52
  105. package/components/data/table/hooks/usePaginationState.js +45 -24
  106. package/components/data/table/hooks/usePanelStructure.js +4 -4
  107. package/components/data/table/hooks/useRowHandlers.js +39 -5
  108. package/components/data/table/hooks/useRowSelection.js +244 -50
  109. package/components/data/table/hooks/useServerSideSorting.js +81 -37
  110. package/components/data/table/hooks/useTableColumns.js +211 -118
  111. package/components/data/table/hooks/useTableData.js +54 -9
  112. package/components/data/table/hooks/useTableEdit.js +272 -97
  113. package/components/data/table/hooks/useTableEffects.js +31 -13
  114. package/components/data/table/hooks/useTableFilter.js +1 -1
  115. package/components/data/table/hooks/useTableInitialization.js +23 -22
  116. package/components/data/table/hooks/useTableState.js +11 -5
  117. package/components/data/table/hooks/useTableStateManager.js +140 -65
  118. package/components/data/table/index.js +637 -274
  119. package/components/data/table/live-table/index.js +54 -22
  120. package/components/data/table/table-action/index.js +1 -1
  121. package/components/data/table/table-group/index.js +26 -0
  122. package/components/data/table/table-row-action/index.js +32 -18
  123. package/components/data/table/utils/buildSelectionColumns.js +12 -21
  124. package/components/data/table/utils/columnBuilder.js +29 -14
  125. package/components/data/table/utils/columnProxy.js +68 -1
  126. package/components/data/table/utils/constants.js +6 -2
  127. package/components/data/table/utils/crud-handlers.js +68 -63
  128. package/components/data/table/utils/groupHeaderUtils.js +102 -0
  129. package/components/data/table/utils/index.js +210 -21
  130. package/components/data/table/utils/renderDisplayCell.js +6 -6
  131. package/components/data/table/utils/selectionUtils.js +25 -26
  132. package/components/data/table/utils/validation.js +1 -0
  133. package/components/data/utils/filter-field-util.js +3 -3
  134. package/components/dialogs/alert-dialog/index.js +1 -1
  135. package/components/dialogs/confirm-dialog/index.js +1 -1
  136. package/components/dialogs/dialog/index.js +4 -1
  137. package/components/dialogs/dialog-content/index.js +3 -1
  138. package/components/dialogs/dialog-header/index.js +2 -2
  139. package/components/dialogs/iframe-dialog/index.js +11 -5
  140. package/components/dialogs/index.js +1 -1
  141. package/components/dialogs/login-dialog/index.js +1 -1
  142. package/components/dialogs/page-dialog/index.js +1 -1
  143. package/components/form/button/index.js +33 -7
  144. package/components/input/calendar/index.js +18 -6
  145. package/components/input/chips/index.js +99 -28
  146. package/components/input/chips/utils.js +34 -4
  147. package/components/input/color-picker/index.js +74 -25
  148. package/components/input/composite/index.js +3 -3
  149. package/components/input/currency/index.js +35 -49
  150. package/components/input/default/checkbox/index.js +23 -28
  151. package/components/input/default/checkboxset/index.js +38 -18
  152. package/components/input/default/checkboxset/utils.js +30 -0
  153. package/components/input/default/radioset/index.js +36 -39
  154. package/components/input/default/switch/index.js +30 -13
  155. package/components/input/epoch/date/index.js +130 -69
  156. package/components/input/epoch/date/utils.js +94 -1
  157. package/components/input/epoch/datetime/index.js +72 -22
  158. package/components/input/epoch/datetime/utils.js +49 -10
  159. package/components/input/epoch/time/index.js +68 -19
  160. package/components/input/epoch/time/utils.js +62 -14
  161. package/components/input/fileupload/Utils.js +12 -7
  162. package/components/input/fileupload/components/MultiUpload.js +2 -6
  163. package/components/input/fileupload/components/SingleUpload.js +3 -7
  164. package/components/input/fileupload/index.js +6 -10
  165. package/components/input/fileupload/useFileUpload.js +16 -5
  166. package/components/input/number/index.js +158 -43
  167. package/components/input/rating/index.js +90 -7
  168. package/components/input/select/index.js +209 -72
  169. package/components/input/slider/index.js +84 -26
  170. package/components/input/text/index.js +38 -18
  171. package/components/input/text/util.js +283 -130
  172. package/components/input/textarea/index.js +13 -10
  173. package/components/input/upload/index.js +124 -0
  174. package/components/input/upload/props.js +5 -0
  175. package/components/input/util/index.js +11 -0
  176. package/components/navbar/index.js +51 -3
  177. package/components/navbar/nav/index.js +46 -16
  178. package/components/navbar/nav-item/index.js +11 -5
  179. package/components/navigation/menu/components/ListItems.js +3 -0
  180. package/components/navigation/menu/constants.js +2 -1
  181. package/components/navigation/menu/hooks/useHoverState.hook.js +48 -0
  182. package/components/navigation/menu/hooks/useKeyboardMovements.hook.js +37 -0
  183. package/components/navigation/menu/hooks/useTransformedDataset.hook.js +15 -0
  184. package/components/navigation/menu/index.js +326 -188
  185. package/components/navigation/menu/utils/action-task.js +14 -0
  186. package/components/navigation/menu/utils/role-filter.js +76 -0
  187. package/components/navigation/popover/index.js +105 -32
  188. package/components/page/partial-container/index.js +34 -5
  189. package/components/prefab/index.js +2 -4
  190. package/context/PrefabContext.js +10 -6
  191. package/context/WidgetProvider.js +30 -31
  192. package/core/app.service.js +1 -1
  193. package/core/constants/events.js +57 -1
  194. package/core/dialog.service.js +1 -2
  195. package/core/event-notifier.js +1 -2
  196. package/core/formatter/array-formatters.js +33 -0
  197. package/core/formatter/date-formatters.js +2 -4
  198. package/core/formatter/index.js +2 -1
  199. package/core/formatter/number-formatters.js +5 -10
  200. package/core/formatter/security-formatters.js +2 -4
  201. package/core/formatter/string-formatters.js +3 -6
  202. package/core/proxy-service.js +85 -13
  203. package/core/script-registry.js +108 -48
  204. package/core/util/common.js +4 -4
  205. package/core/util/compare.js +30 -0
  206. package/core/util/dom.js +8 -8
  207. package/core/util/index.js +16 -6
  208. package/core/util/safe-is-equal.js +156 -0
  209. package/core/util/security.js +1 -2
  210. package/core/util/utils.js +16 -7
  211. package/higherOrder/BaseApp.js +108 -65
  212. package/higherOrder/BaseDateTime.js +31 -13
  213. package/higherOrder/BasePage.js +268 -144
  214. package/higherOrder/BasePartial.js +1 -1
  215. package/higherOrder/BasePrefab.js +33 -15
  216. package/higherOrder/DataNav.js +99 -16
  217. package/higherOrder/helper.js +41 -3
  218. package/higherOrder/withBaseWrapper.js +41 -28
  219. package/hooks/useAuth.js +11 -5
  220. package/hooks/useHttp.js +280 -94
  221. package/mui-config/theme-provider.js +1 -1
  222. package/mui-config/theme.js +1 -1
  223. package/package-lock.json +840 -740
  224. package/package.json +8 -8
  225. package/store/bindActions/i18nActions.js +18 -0
  226. package/store/index.js +3 -1
  227. package/store/slices/appConfigSlice.js +2 -2
  228. package/store/slices/authSlice.js +31 -28
  229. package/store/slices/i18nSlice.js +2 -2
  230. package/store/slices/navigationSlice.js +35 -0
  231. package/store/viewport.service.js +255 -0
  232. package/utils/attr.js +35 -0
  233. package/utils/dataset-util.js +1 -2
  234. package/utils/form-state.util.js +43 -12
  235. package/utils/form-utils.js +47 -2
  236. package/utils/format-util.js +28 -13
  237. package/utils/page-params-util.js +33 -1
  238. package/utils/state-persistance.js +72 -13
  239. package/utils/transformedDataset-utils.js +35 -24
  240. package/variables/base-variable.js +12 -14
  241. package/variables/crud-variable.js +225 -0
  242. package/variables/live-variable.js +56 -20
  243. package/variables/metadata.service.js +123 -0
  244. package/variables/model-variable.js +21 -15
  245. package/variables/service-variable.js +88 -83
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useUpdateEditedCell = exports.useEditedRowsContext = exports.useEditedRow = exports.EditedRowsProvider = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ 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); }
10
+ var __jsx = _react["default"].createElement;
11
+ var EditedRowsContext = /*#__PURE__*/(0, _react.createContext)({
12
+ updateCell: function updateCell() {},
13
+ getEdits: function getEdits() {
14
+ return undefined;
15
+ },
16
+ getAllEdits: function getAllEdits() {
17
+ return {};
18
+ },
19
+ subscribe: function subscribe() {
20
+ return function () {};
21
+ },
22
+ subscribeToAll: function subscribeToAll() {
23
+ return function () {};
24
+ },
25
+ removeRowEdits: function removeRowEdits() {}
26
+ });
27
+ var EditedRowsProvider = exports.EditedRowsProvider = function EditedRowsProvider(_ref) {
28
+ var children = _ref.children;
29
+ // Store the actual edited data
30
+ var editedRowsRef = (0, _react.useRef)({});
31
+
32
+ // Registry of listeners: rowId -> Set of callbacks
33
+ var listenersRef = (0, _react.useRef)({});
34
+
35
+ // Global listeners for any change
36
+ var globalListenersRef = (0, _react.useRef)(new Set());
37
+ var updateCell = (0, _react.useCallback)(function (rowId, field, value) {
38
+ // 1. Update the data
39
+ if (!editedRowsRef.current[rowId]) {
40
+ editedRowsRef.current[rowId] = {};
41
+ }
42
+
43
+ // Check if value actually changed to avoid unnecessary notifies
44
+ if (editedRowsRef.current[rowId][field] === value) return;
45
+ editedRowsRef.current[rowId][field] = value;
46
+
47
+ // 2. Notify row listeners
48
+ if (listenersRef.current[rowId]) {
49
+ listenersRef.current[rowId].forEach(function (cb) {
50
+ return cb();
51
+ });
52
+ }
53
+
54
+ // 3. Notify global listeners
55
+ if (globalListenersRef.current.size > 0) {
56
+ globalListenersRef.current.forEach(function (cb) {
57
+ return cb();
58
+ });
59
+ }
60
+ }, []);
61
+ var getEdits = (0, _react.useCallback)(function (rowId) {
62
+ return editedRowsRef.current[rowId];
63
+ }, []);
64
+ var getAllEdits = (0, _react.useCallback)(function () {
65
+ return editedRowsRef.current;
66
+ }, []);
67
+ var removeRowEdits = (0, _react.useCallback)(function (rowId) {
68
+ if (editedRowsRef.current[rowId]) {
69
+ delete editedRowsRef.current[rowId];
70
+ // Notify listeners so they can update (e.g. revert to original)
71
+ if (listenersRef.current[rowId]) {
72
+ listenersRef.current[rowId].forEach(function (cb) {
73
+ return cb();
74
+ });
75
+ }
76
+ // Notify global listeners
77
+ if (globalListenersRef.current.size > 0) {
78
+ globalListenersRef.current.forEach(function (cb) {
79
+ return cb();
80
+ });
81
+ }
82
+ }
83
+ }, []);
84
+ var subscribe = (0, _react.useCallback)(function (rowId, callback) {
85
+ if (!listenersRef.current[rowId]) {
86
+ listenersRef.current[rowId] = new Set();
87
+ }
88
+ listenersRef.current[rowId].add(callback);
89
+
90
+ // Unsubscribe function
91
+ return function () {
92
+ if (listenersRef.current[rowId]) {
93
+ listenersRef.current[rowId]["delete"](callback);
94
+ if (listenersRef.current[rowId].size === 0) {
95
+ delete listenersRef.current[rowId];
96
+ }
97
+ }
98
+ };
99
+ }, []);
100
+ var subscribeToAll = (0, _react.useCallback)(function (callback) {
101
+ globalListenersRef.current.add(callback);
102
+ return function () {
103
+ globalListenersRef.current["delete"](callback);
104
+ };
105
+ }, []);
106
+ return __jsx(EditedRowsContext.Provider, {
107
+ value: {
108
+ updateCell: updateCell,
109
+ getEdits: getEdits,
110
+ getAllEdits: getAllEdits,
111
+ subscribe: subscribe,
112
+ subscribeToAll: subscribeToAll,
113
+ removeRowEdits: removeRowEdits
114
+ }
115
+ }, children);
116
+ };
117
+
118
+ // Hook for components to subscribe to edits for a specific row
119
+ var useEditedRow = exports.useEditedRow = function useEditedRow(rowId) {
120
+ var context = (0, _react.useContext)(EditedRowsContext);
121
+
122
+ // Local state to force re-render when subscription fires
123
+ // We use a simple counter
124
+ var _useState = (0, _react.useState)(0),
125
+ setTick = _useState[1];
126
+ (0, _react.useEffect)(function () {
127
+ var unsubscribe = context.subscribe(rowId, function () {
128
+ setTick(function (t) {
129
+ return t + 1;
130
+ });
131
+ });
132
+ return unsubscribe;
133
+ }, [context, rowId]);
134
+ return context.getEdits(rowId);
135
+ };
136
+ var useEditedRowsContext = exports.useEditedRowsContext = function useEditedRowsContext() {
137
+ return (0, _react.useContext)(EditedRowsContext);
138
+ };
139
+ var useUpdateEditedCell = exports.useUpdateEditedCell = function useUpdateEditedCell() {
140
+ return (0, _react.useContext)(EditedRowsContext).updateCell;
141
+ };
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.useCellState = exports.setSelectedRowIds = exports.setSelectedRowId = exports.setCellValue = exports.getSelectedRowIds = exports.getSelectedRowId = exports.getCellValue = void 0;
7
+ exports.useCellState = exports.setSelectedRowIds = exports.setCellValue = exports.getSelectedRowIds = exports.getCellValue = void 0;
8
8
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
9
  var _lodashEs = require("lodash-es");
10
10
  var _react = require("react");
@@ -17,7 +17,6 @@ var useCellState = exports.useCellState = function useCellState(tableId) {
17
17
  var stateRef = (0, _react.useRef)({
18
18
  cells: {},
19
19
  selection: {
20
- selectedRowId: null,
21
20
  selectedRowIds: []
22
21
  }
23
22
  });
@@ -66,7 +65,6 @@ var useCellState = exports.useCellState = function useCellState(tableId) {
66
65
  stateRef.current = {
67
66
  cells: {},
68
67
  selection: {
69
- selectedRowId: null,
70
68
  selectedRowIds: []
71
69
  }
72
70
  };
@@ -101,16 +99,11 @@ var getCellValue = exports.getCellValue = function getCellValue(state, rowId, fi
101
99
  var setCellValue = exports.setCellValue = function setCellValue(state, rowId, fieldName, value) {
102
100
  state.setValue(["cells", rowId, fieldName], value);
103
101
  };
104
- var getSelectedRowId = exports.getSelectedRowId = function getSelectedRowId(state) {
105
- var _state$getValue;
106
- return (_state$getValue = state.getValue("selection.selectedRowId", null)) !== null && _state$getValue !== void 0 ? _state$getValue : null;
107
- };
108
- var setSelectedRowId = exports.setSelectedRowId = function setSelectedRowId(state, rowId) {
109
- state.setValue("selection.selectedRowId", rowId);
110
- };
102
+
103
+ // Unified selection helpers - uses single selectedRowIds array for both radio and multiselect
111
104
  var getSelectedRowIds = exports.getSelectedRowIds = function getSelectedRowIds(state) {
112
- var _state$getValue2;
113
- return (_state$getValue2 = state.getValue("selection.selectedRowIds", [])) !== null && _state$getValue2 !== void 0 ? _state$getValue2 : [];
105
+ var _state$getValue;
106
+ return (_state$getValue = state.getValue("selection.selectedRowIds", [])) !== null && _state$getValue !== void 0 ? _state$getValue : [];
114
107
  };
115
108
  var setSelectedRowIds = exports.setSelectedRowIds = function setSelectedRowIds(state, rowIds) {
116
109
  state.setValue("selection.selectedRowIds", rowIds);
@@ -7,44 +7,64 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.useFormWidget = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
11
  var _react = _interopRequireWildcard(require("react"));
11
12
  var _utils = require("../utils");
12
- var _text = _interopRequireDefault(require("../../../input/text"));
13
- var _textarea = _interopRequireDefault(require("../../../input/textarea"));
14
- var _number = _interopRequireDefault(require("../../../input/number"));
15
- var _currency = _interopRequireDefault(require("../../../input/currency"));
16
- var _datetime = _interopRequireDefault(require("../../../input/epoch/datetime"));
17
- var _time = _interopRequireDefault(require("../../../input/epoch/time"));
18
- var _date = _interopRequireDefault(require("../../../input/epoch/date"));
19
- var _select = _interopRequireDefault(require("../../../input/select"));
20
- var _slider = _interopRequireDefault(require("../../../input/slider"));
21
- var _rating = _interopRequireDefault(require("../../../input/rating"));
22
- var _colorPicker = _interopRequireDefault(require("../../../input/color-picker"));
23
- var _fileupload = _interopRequireDefault(require("../../../input/fileupload"));
24
- var _chips = _interopRequireDefault(require("../../../input/chips"));
25
- var _richtexteditor = _interopRequireDefault(require("../../../basic/richtexteditor"));
26
- var _search = _interopRequireDefault(require("../../../basic/search"));
27
- var _checkbox = _interopRequireDefault(require("../../../input/default/checkbox"));
28
- var _switch = _interopRequireDefault(require("../../../input/default/switch"));
29
- var _checkboxset = _interopRequireDefault(require("../../../input/default/checkboxset"));
30
- var _radioset = _interopRequireDefault(require("../../../input/default/radioset"));
13
+ var _text = _interopRequireDefault(require("@wavemaker/react-runtime/components/input/text"));
14
+ var _textarea = _interopRequireDefault(require("@wavemaker/react-runtime/components/input/textarea"));
15
+ var _number = _interopRequireDefault(require("@wavemaker/react-runtime/components/input/number"));
16
+ var _currency = _interopRequireDefault(require("@wavemaker/react-runtime/components/input/currency"));
17
+ var _datetime = _interopRequireDefault(require("@wavemaker/react-runtime/components/input/epoch/datetime"));
18
+ var _time = _interopRequireDefault(require("@wavemaker/react-runtime/components/input/epoch/time"));
19
+ var _date = _interopRequireDefault(require("@wavemaker/react-runtime/components/input/epoch/date"));
20
+ var _select = _interopRequireDefault(require("@wavemaker/react-runtime/components/input/select"));
21
+ var _slider = _interopRequireDefault(require("@wavemaker/react-runtime/components/input/slider"));
22
+ var _rating = _interopRequireDefault(require("@wavemaker/react-runtime/components/input/rating"));
23
+ var _colorPicker = _interopRequireDefault(require("@wavemaker/react-runtime/components/input/color-picker"));
24
+ var _fileupload = _interopRequireDefault(require("@wavemaker/react-runtime/components/input/fileupload"));
25
+ var _chips = _interopRequireDefault(require("@wavemaker/react-runtime/components/input/chips"));
26
+ var _richtexteditor = _interopRequireDefault(require("@wavemaker/react-runtime/components/basic/richtexteditor"));
27
+ var _search = _interopRequireDefault(require("@wavemaker/react-runtime/components/basic/search"));
28
+ var _checkbox = _interopRequireDefault(require("@wavemaker/react-runtime/components/input/default/checkbox"));
29
+ var _switch = _interopRequireDefault(require("@wavemaker/react-runtime/components/input/default/switch"));
30
+ var _checkboxset = _interopRequireDefault(require("@wavemaker/react-runtime/components/input/default/checkboxset"));
31
+ var _radioset = _interopRequireDefault(require("@wavemaker/react-runtime/components/input/default/radioset"));
32
+ var _get = _interopRequireDefault(require("lodash-es/get"));
31
33
  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); }
32
- var __jsx = _react["default"].createElement; // Import form widgets
34
+ var __jsx = _react["default"].createElement;
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
+ 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; } // Import form widgets
37
+ function getDisabledValue(disabled, rowData) {
38
+ if (typeof disabled === "string") {
39
+ if (disabled.includes("rowData")) {
40
+ try {
41
+ return new Function("rowData", "return ".concat(disabled))(rowData);
42
+ } catch (error) {
43
+ console.warn("Failed to evaluate disabled expression:", disabled, error);
44
+ return false;
45
+ }
46
+ }
47
+ return (0, _get["default"])(rowData, disabled);
48
+ }
49
+ return disabled;
50
+ }
33
51
  var useFormWidget = exports.useFormWidget = function useFormWidget(_ref) {
34
52
  var listener = _ref.listener;
35
53
  // Function to render the appropriate form widget based on editWidgetType
36
54
  var renderFormWidget = (0, _react.useCallback)(function (fieldName, widgetType, value, fieldChangeCallback, widgetProps) {
55
+ var _widgetProps$column2;
37
56
  // Use defaultvalue if value is null/undefined and defaultvalue is provided
38
57
  var effectiveValue = value !== undefined && value !== null ? value : (widgetProps === null || widgetProps === void 0 ? void 0 : widgetProps.defaultvalue) || "";
39
58
  var sessionSuffix = widgetProps !== null && widgetProps !== void 0 && widgetProps.sessionKey ? "_".concat(widgetProps.sessionKey) : "";
40
59
  var uniqueName = "edit_".concat(fieldName).concat(sessionSuffix);
41
- var commonProps = {
60
+ var disabled = getDisabledValue(widgetProps === null || widgetProps === void 0 ? void 0 : widgetProps.disabled, widgetProps === null || widgetProps === void 0 ? void 0 : widgetProps.rowData);
61
+ var commonProps = _objectSpread({
42
62
  key: uniqueName,
43
63
  // Add key to force component recreation
44
64
  name: uniqueName,
45
65
  datavalue: effectiveValue,
46
66
  required: (widgetProps === null || widgetProps === void 0 ? void 0 : widgetProps.required) || false,
47
- disabled: (widgetProps === null || widgetProps === void 0 ? void 0 : widgetProps.disabled) || false,
67
+ disabled: disabled,
48
68
  placeholder: (widgetProps === null || widgetProps === void 0 ? void 0 : widgetProps.placeholder) || "Enter ".concat(fieldName),
49
69
  onChange: function onChange(event, widget, newVal) {
50
70
  var _widgetProps$column;
@@ -58,8 +78,10 @@ var useFormWidget = exports.useFormWidget = function useFormWidget(_ref) {
58
78
  },
59
79
  listener: listener,
60
80
  rowData: widgetProps === null || widgetProps === void 0 ? void 0 : widgetProps.rowData,
61
- column: widgetProps === null || widgetProps === void 0 ? void 0 : widgetProps.column
62
- };
81
+ column: widgetProps === null || widgetProps === void 0 ? void 0 : widgetProps.column,
82
+ updateon: "blur",
83
+ regexp: (widgetProps === null || widgetProps === void 0 || (_widgetProps$column2 = widgetProps.column) === null || _widgetProps$column2 === void 0 ? void 0 : _widgetProps$column2.regexp) || ".*"
84
+ }, widgetProps === null || widgetProps === void 0 ? void 0 : widgetProps.column);
63
85
 
64
86
  // Helper function to wrap event handlers with the correct parameters
65
87
  var wrapEventHandler = function wrapEventHandler(handler) {
@@ -105,29 +127,22 @@ var useFormWidget = exports.useFormWidget = function useFormWidget(_ref) {
105
127
  // Check if column has editinputtype property
106
128
  var editInputType = (column === null || column === void 0 ? void 0 : column.editinputtype) || "text";
107
129
  return __jsx(_text["default"], (0, _extends2["default"])({}, commonProps, {
108
- type: editInputType,
109
- updateon: "keypress"
130
+ type: editInputType
110
131
  }));
111
132
  case "WmPassword":
112
133
  return __jsx(_text["default"], (0, _extends2["default"])({}, commonProps, {
113
- type: "password",
114
- updateon: "keypress"
134
+ type: "password"
115
135
  }));
116
136
  case "WmTextarea":
117
- return __jsx(_textarea["default"], (0, _extends2["default"])({}, commonProps, {
118
- updateon: "keypress"
119
- }));
137
+ return __jsx(_textarea["default"], commonProps);
120
138
  case "WmCheckbox":
121
- var checkboxDataset = (0, _utils.getBooleanDataset)();
139
+ return __jsx(_checkbox["default"], commonProps);
140
+ case "WmToggle":
122
141
  return __jsx(_checkbox["default"], (0, _extends2["default"])({}, commonProps, {
123
- dataset: checkboxDataset
142
+ type: "toggle"
124
143
  }));
125
- case "WmToggle":
126
144
  case "WmSwitch":
127
- var switchDataset = (0, _utils.getBooleanDataset)();
128
- return __jsx(_switch["default"], (0, _extends2["default"])({}, commonProps, {
129
- dataset: switchDataset
130
- }));
145
+ return __jsx(_switch["default"], commonProps);
131
146
  case "WmNumber":
132
147
  return __jsx(_number["default"], commonProps);
133
148
  case "WmCurrency":
@@ -138,17 +153,11 @@ var useFormWidget = exports.useFormWidget = function useFormWidget(_ref) {
138
153
  case "WmRichtexteditor":
139
154
  return __jsx(_richtexteditor["default"], commonProps);
140
155
  case "WmSelect":
141
- return __jsx(_select["default"], (0, _extends2["default"])({}, commonProps, {
142
- dataset: []
143
- }));
156
+ return __jsx(_select["default"], commonProps);
144
157
  case "WmCheckboxset":
145
- return __jsx(_checkboxset["default"], (0, _extends2["default"])({}, commonProps, {
146
- dataset: []
147
- }));
158
+ return __jsx(_checkboxset["default"], commonProps);
148
159
  case "WmRadioset":
149
- return __jsx(_radioset["default"], (0, _extends2["default"])({}, commonProps, {
150
- dataset: []
151
- }));
160
+ return __jsx(_radioset["default"], commonProps);
152
161
  case "WmDate":
153
162
  return __jsx(_date["default"], commonProps);
154
163
  case "WmTime":
@@ -161,12 +170,10 @@ var useFormWidget = exports.useFormWidget = function useFormWidget(_ref) {
161
170
  return __jsx(_rating["default"], commonProps);
162
171
  case "WmAutocomplete":
163
172
  return __jsx(_search["default"], (0, _extends2["default"])({}, commonProps, {
164
- dataset: []
173
+ type: "autocomplete"
165
174
  }));
166
175
  case "WmChips":
167
- return __jsx(_chips["default"], (0, _extends2["default"])({}, commonProps, {
168
- dataset: []
169
- }));
176
+ return __jsx(_chips["default"], commonProps);
170
177
  case "WmColorpicker":
171
178
  case "WmColorPicker":
172
179
  return __jsx(_colorPicker["default"], commonProps);
@@ -174,7 +181,6 @@ var useFormWidget = exports.useFormWidget = function useFormWidget(_ref) {
174
181
  return __jsx(_fileupload["default"], commonProps);
175
182
  default:
176
183
  // Unknown widget types fallback to text input
177
- console.warn("Unknown widget type: ".concat(widgetType, ", falling back to WmText"));
178
184
  return __jsx(_text["default"], commonProps);
179
185
  }
180
186
  }, []);
@@ -1,59 +1,80 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.usePaginationState = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
9
  var _react = require("react");
10
+ 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; }
11
+ 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; }
8
12
  /**
9
- * Hook to manage pagination state and behavior
13
+ * Hook to manage pagination state and behavior for TanStack Table
14
+ * Provides controlled pagination state management
10
15
  */
11
16
  var usePaginationState = exports.usePaginationState = function usePaginationState(_ref) {
12
- var table = _ref.table,
17
+ var initialPage = _ref.initialPage,
18
+ initialPageSize = _ref.initialPageSize,
13
19
  editmode = _ref.editmode,
14
20
  internalDataset = _ref.internalDataset,
15
- isAddingNewRow = _ref.isAddingNewRow,
16
- cancelEditing = _ref.cancelEditing,
17
21
  datasource = _ref.datasource,
18
22
  isServerSidePagination = _ref.isServerSidePagination;
19
- var prevPageRef = (0, _react.useRef)(table.getState().pagination.pageIndex);
23
+ // Local state for pagination - needed for controlled TanStack Table pagination
24
+ var _useState = (0, _react.useState)({
25
+ pageIndex: initialPage - 1,
26
+ // Convert to 0-based index
27
+ pageSize: initialPageSize
28
+ }),
29
+ paginationState = _useState[0],
30
+ setPaginationState = _useState[1];
20
31
 
21
- // Hide add new row when page changes
22
- (0, _react.useEffect)(function () {
23
- var currentPage = table.getState().pagination.pageIndex;
24
- if (currentPage !== prevPageRef.current && isAddingNewRow) {
25
- cancelEditing();
26
- }
27
- prevPageRef.current = currentPage;
28
- }, [table, isAddingNewRow, cancelEditing]);
32
+ // Direct pagination handler - avoids redundant table.setPageIndex() call
29
33
  var handlePaginationChange = (0, _react.useCallback)(function (event, widget, index) {
34
+ var newPageIndex = index - 1; // Convert to 0-based index
35
+
36
+ // Handle quickedit edge case - prevent navigation to empty pages
30
37
  if (editmode === "quickedit" && !isServerSidePagination) {
31
- var newPageIndex = index - 1; // Convert to 0-based index
32
- var pageSize = table.getState().pagination.pageSize;
38
+ var pageSize = paginationState.pageSize;
33
39
  var dataLength = internalDataset.length;
34
40
  var startIdx = newPageIndex * pageSize;
35
-
36
- // If this would be an empty page (no data on it), prevent navigation
37
41
  if (startIdx >= dataLength && dataLength > 0) {
38
- // Calculate the correct page to navigate to
39
42
  var correctPage = Math.ceil(dataLength / pageSize);
40
43
  if (correctPage > 0) {
41
- table.setPageIndex(correctPage - 1); // Convert to 0-based index
44
+ setPaginationState(function (prev) {
45
+ return _objectSpread(_objectSpread({}, prev), {}, {
46
+ pageIndex: correctPage - 1
47
+ });
48
+ });
42
49
  return;
43
50
  }
44
51
  }
45
52
  }
46
- table.setPageIndex(index - 1);
47
- }, [editmode, internalDataset, table, isServerSidePagination]);
53
+
54
+ // Directly update pagination state - no need for table.setPageIndex() roundtrip
55
+ setPaginationState(function (prev) {
56
+ return _objectSpread(_objectSpread({}, prev), {}, {
57
+ pageIndex: newPageIndex
58
+ });
59
+ });
60
+ }, [editmode, isServerSidePagination, internalDataset.length, paginationState.pageSize]);
61
+
62
+ // Page size change handler
48
63
  var handlePageSizeChange = (0, _react.useCallback)(function (newPageSize) {
49
64
  // Update datasource maxResults if datasource has paging capability
50
65
  if (isServerSidePagination && datasource && datasource.maxResults !== undefined) {
51
66
  datasource.maxResults = newPageSize;
52
67
  }
53
- table.setPageSize(newPageSize);
54
- table.setPageIndex(0); // Reset to first page
55
- }, [table, isServerSidePagination, datasource]);
68
+
69
+ // Directly update pagination state - pageSize and reset to first page
70
+ setPaginationState({
71
+ pageIndex: 0,
72
+ pageSize: newPageSize
73
+ });
74
+ }, [isServerSidePagination, datasource]);
56
75
  return {
76
+ paginationState: paginationState,
77
+ setPaginationState: setPaginationState,
57
78
  handlePaginationChange: handlePaginationChange,
58
79
  handlePageSizeChange: handlePageSizeChange
59
80
  };
@@ -10,8 +10,8 @@ var usePanelStructure = exports.usePanelStructure = function usePanelStructure(_
10
10
  var title = _ref.title,
11
11
  subheading = _ref.subheading,
12
12
  iconclass = _ref.iconclass,
13
- _ref$exportOptions = _ref.exportOptions,
14
- exportOptions = _ref$exportOptions === void 0 ? [] : _ref$exportOptions,
13
+ _ref$exportformat = _ref.exportformat,
14
+ exportformat = _ref$exportformat === void 0 ? [] : _ref$exportformat,
15
15
  headerActions = _ref.headerActions,
16
16
  footerActions = _ref.footerActions,
17
17
  shownavigation = _ref.shownavigation,
@@ -21,8 +21,8 @@ var usePanelStructure = exports.usePanelStructure = function usePanelStructure(_
21
21
  allowpagesizechange = _ref.allowpagesizechange,
22
22
  datasource = _ref.datasource;
23
23
  var showPanelHeading = (0, _react.useMemo)(function () {
24
- return (0, _utils.shouldShowPanelHeading)(title, subheading, iconclass, exportOptions, headerActions);
25
- }, [title, subheading, iconclass, exportOptions, headerActions]);
24
+ return (0, _utils.shouldShowPanelHeading)(title, subheading, iconclass, exportformat, headerActions);
25
+ }, [title, subheading, iconclass, exportformat, headerActions]);
26
26
  var showPagination = (0, _react.useMemo)(function () {
27
27
  return (0, _utils.shouldShowPagination)({
28
28
  shownavigation: shownavigation,
@@ -15,13 +15,41 @@ var useRowHandlers = exports.useRowHandlers = function useRowHandlers(_ref) {
15
15
  handleRowSelectionClick = _ref.handleRowSelectionClick,
16
16
  handleTableEditRowClick = _ref.handleTableEditRowClick,
17
17
  handleRowActiveClick = _ref.handleRowActiveClick,
18
- onRowclick = _ref.onRowclick;
18
+ onRowclick = _ref.onRowclick,
19
+ _ref$useRadioSelect = _ref.useRadioSelect,
20
+ useRadioSelect = _ref$useRadioSelect === void 0 ? false : _ref$useRadioSelect,
21
+ _ref$useMultiSelect = _ref.useMultiSelect,
22
+ useMultiSelect = _ref$useMultiSelect === void 0 ? false : _ref$useMultiSelect,
23
+ _ref$isrowselectable = _ref.isrowselectable,
24
+ isrowselectable = _ref$isrowselectable === void 0 ? false : _ref$isrowselectable,
25
+ listener = _ref.listener,
26
+ name = _ref.name;
19
27
  var handleRowClick = (0, _react.useCallback)(function (event, rowData, rowId) {
20
- // Handle row selection first
21
- var isSelectionHandled = handleRowSelectionClick(event, rowId, rowData);
28
+ // Determine if selection mode is enabled
29
+ var hasSelectionMode = useRadioSelect || useMultiSelect;
30
+
31
+ // Fire onRowclick FIRST - before any selection changes (matches Angular behavior)
22
32
  if (onRowclick) {
23
- onRowclick(event, {}, (0, _utils.cleanRowData)(rowData));
33
+ var _listener$Widgets, _listener$Widgets2;
34
+ if (listener !== null && listener !== void 0 && (_listener$Widgets = listener.Widgets) !== null && _listener$Widgets !== void 0 && _listener$Widgets[name]) {
35
+ listener.Widgets[name].nativeElement = event.target;
36
+ }
37
+ onRowclick(event, listener === null || listener === void 0 || (_listener$Widgets2 = listener.Widgets) === null || _listener$Widgets2 === void 0 ? void 0 : _listener$Widgets2[name], (0, _utils.cleanRowData)(rowData));
38
+ }
39
+
40
+ // Handle row selection based on isrowselectable setting
41
+ // When isrowselectable is false and selection mode is enabled,
42
+ // only allow selection through the radio/checkbox column (not row click)
43
+ var isSelectionHandled = false;
44
+ if (hasSelectionMode && isrowselectable) {
45
+ // Current behavior: clicking anywhere on row selects it
46
+ isSelectionHandled = handleRowSelectionClick(event, rowId, rowData);
47
+ } else if (!hasSelectionMode) {
48
+ // No selection mode enabled, just handle as normal (makes row active)
49
+ isSelectionHandled = handleRowSelectionClick(event, rowId, rowData);
24
50
  }
51
+ // When hasSelectionMode && !isrowselectable, skip row selection from row click
52
+ // Selection will only happen through the radio/checkbox column click
25
53
 
26
54
  // Handle table edit row click (works for both inline and quickedit)
27
55
  handleTableEditRowClick(rowData, rowId);
@@ -30,8 +58,14 @@ var useRowHandlers = exports.useRowHandlers = function useRowHandlers(_ref) {
30
58
  var isEditingOrAdding = editingRowId !== null || isAddingNewRow;
31
59
 
32
60
  // Handle active row state
61
+ // When isrowselectable is false and selection mode is enabled,
62
+ // don't set the active class on row click - only through radio/checkbox column
63
+ if (hasSelectionMode && !isrowselectable) {
64
+ // Skip setting active row when isrowselectable is false with selection mode
65
+ return;
66
+ }
33
67
  handleRowActiveClick(rowId, isSelectionHandled, isEditingOrAdding);
34
- }, [editingRowId, isAddingNewRow, handleRowSelectionClick, handleTableEditRowClick, handleRowActiveClick]);
68
+ }, [editingRowId, isAddingNewRow, handleRowSelectionClick, handleTableEditRowClick, handleRowActiveClick, onRowclick, useRadioSelect, useMultiSelect, isrowselectable, listener, name]);
35
69
  return {
36
70
  handleRowClick: handleRowClick
37
71
  };