@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
@@ -49,7 +49,8 @@ var WizardStep = exports.WizardStep = function WizardStep(_ref) {
49
49
  }),
50
50
  "aria-current": step.active ? "step" : undefined,
51
51
  "aria-label": step.subtitle ? "step ".concat(index + 1, " ").concat(step.title, " ").concat(step.subtitle) : "step ".concat(index + 1, " ").concat(step.title),
52
- "aria-disabled": step.disabled
52
+ "aria-disabled": step.disabled,
53
+ title: step.title
53
54
  }, __jsx(_material.StepLabel, (0, _extends2["default"])({}, labelProps, {
54
55
  slots: {
55
56
  stepIcon: _StepComponents.CustomStepIcon
@@ -95,8 +95,9 @@ var WmWizard = /*#__PURE__*/(0, _react.memo)(function (props) {
95
95
  setFormReady = _useState4[1];
96
96
 
97
97
  // Create dynamic steps callback
98
- var createDynamicSteps = (0, _react.useCallback)(function (datasetItems) {
98
+ var createDynamicSteps = (0, _react.useCallback)(function (datasetItems, startIndex) {
99
99
  return datasetItems.map(function (item, index) {
100
+ index = startIndex || index;
100
101
  var stepData = render ? render(item, index, datasetItems) : item;
101
102
  var stepProps = stepData.props || {};
102
103
  return _objectSpread(_objectSpread({}, stepProps), {}, {
@@ -115,7 +116,8 @@ var WmWizard = /*#__PURE__*/(0, _react.memo)(function (props) {
115
116
  isInitialized: false,
116
117
  isdynamic: true,
117
118
  dynamicStepIndex: index,
118
- render: stepProps.render
119
+ render: stepProps.render,
120
+ haveForm: stepProps.haveForm || false
119
121
  });
120
122
  });
121
123
  }, [defaultstepindex]);
@@ -189,7 +191,8 @@ var WmWizard = /*#__PURE__*/(0, _react.memo)(function (props) {
189
191
  (0, _react.useEffect)(function () {
190
192
  var validateStep = /*#__PURE__*/function () {
191
193
  var _ref = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
192
- var currentStepForm, formdata, hasFields, result;
194
+ var _currentStepForm$pare;
195
+ var currentStepForm, isFormHidden, formdata, hasFields, result;
193
196
  return _regenerator["default"].wrap(function _callee$(_context) {
194
197
  while (1) switch (_context.prev = _context.next) {
195
198
  case 0:
@@ -206,31 +209,39 @@ var WmWizard = /*#__PURE__*/(0, _react.memo)(function (props) {
206
209
  }
207
210
  return _context.abrupt("return");
208
211
  case 5:
212
+ isFormHidden = currentStepForm.hidden || ((_currentStepForm$pare = currentStepForm.parentElement) === null || _currentStepForm$pare === void 0 ? void 0 : _currentStepForm$pare.hidden);
213
+ if (!isFormHidden) {
214
+ _context.next = 9;
215
+ break;
216
+ }
217
+ setIsStepValid(true);
218
+ return _context.abrupt("return");
219
+ case 9:
209
220
  formdata = (0, _formUtils.getFormData)({
210
221
  current: currentStepForm
211
222
  });
212
223
  if (formdata) {
213
- _context.next = 8;
224
+ _context.next = 12;
214
225
  break;
215
226
  }
216
227
  return _context.abrupt("return");
217
- case 8:
228
+ case 12:
218
229
  hasFields = Object.keys(formdata.values || {}).length > 0;
219
230
  if (hasFields) {
220
- _context.next = 12;
231
+ _context.next = 16;
221
232
  break;
222
233
  }
223
234
  setIsStepValid(true);
224
235
  return _context.abrupt("return");
225
- case 12:
226
- _context.next = 14;
236
+ case 16:
237
+ _context.next = 18;
227
238
  return (0, _formUtils.formValidate)({
228
239
  current: currentStepForm
229
240
  });
230
- case 14:
241
+ case 18:
231
242
  result = _context.sent;
232
243
  setIsStepValid(result);
233
- case 16:
244
+ case 20:
234
245
  case "end":
235
246
  return _context.stop();
236
247
  }
@@ -243,7 +254,8 @@ var WmWizard = /*#__PURE__*/(0, _react.memo)(function (props) {
243
254
  validateStep();
244
255
  }, [currentStep, formValiditySignature, formReady]);
245
256
  var enableNext = (0, _react.useMemo)(function () {
246
- return enablenext || (currentStep === null || currentStep === void 0 ? void 0 : currentStep.enableNext) !== false && (currentStep === null || currentStep === void 0 ? void 0 : currentStep.isValid) !== false && isStepValid;
257
+ var enablenextBool = typeof enablenext === "string" ? enablenext.toLowerCase() === "true" || enablenext === "1" : Boolean(enablenext);
258
+ return enablenextBool || (currentStep === null || currentStep === void 0 ? void 0 : currentStep.enableNext) !== false && (currentStep === null || currentStep === void 0 ? void 0 : currentStep.isValid) !== false && isStepValid;
247
259
  }, [enablenext, currentStep, isStepValid]);
248
260
  var enablePrev = (0, _react.useMemo)(function () {
249
261
  return (currentStep === null || currentStep === void 0 ? void 0 : currentStep.enablePrev) !== false;
@@ -640,7 +652,7 @@ var WmWizard = /*#__PURE__*/(0, _react.memo)(function (props) {
640
652
  currentStep: currentStep
641
653
  });
642
654
  }
643
- }, [_hasNextStep, hasPrevStep, showDoneBtn, enableNext, enablePrev, enableDone, cancelable, currentStep === null || currentStep === void 0 ? void 0 : currentStep.enableskip, nextbtnlabel, previousbtnlabel, donebtnlabel, cancelbtnlabel, actionsalignment, currentStepIndex, isFirstStep, isLastStep]);
655
+ }, [_hasNextStep, hasPrevStep, showDoneBtn, enableNext, enablePrev, enableDone, cancelable, currentStep === null || currentStep === void 0 ? void 0 : currentStep.enableskip, nextbtnlabel, previousbtnlabel, donebtnlabel, cancelbtnlabel, actionsalignment, currentStepIndex, isFirstStep, isLastStep, visibleSteps]);
644
656
  (0, _react.useEffect)(function () {
645
657
  updateListener();
646
658
  }, [updateListener]);
@@ -672,7 +684,7 @@ var WmWizard = /*#__PURE__*/(0, _react.memo)(function (props) {
672
684
 
673
685
  // Handle dataset changes for dynamic wizard
674
686
  (0, _react.useEffect)(function () {
675
- if (type === "dynamic" && dataset.length > 0) {
687
+ if (type === "dynamic" && dataset.length > 0 && steps.length === 0) {
676
688
  var dynamicSteps = createDynamicSteps(dataset);
677
689
  if (defaultstepindex >= 0 && defaultstepindex < dynamicSteps.length) {
678
690
  var defaultStep = dynamicSteps[defaultstepindex];
@@ -692,8 +704,29 @@ var WmWizard = /*#__PURE__*/(0, _react.memo)(function (props) {
692
704
  } else {
693
705
  setSteps(dynamicSteps);
694
706
  }
707
+ return;
695
708
  }
696
- }, [type, dataset, createDynamicSteps, defaultstepindex]);
709
+ if (type === "dynamic" && dataset.length > 0) {
710
+ // Append new steps if dataset grew
711
+ if (steps.length > 0 && dataset.length > steps.length) {
712
+ var newItems = dataset.slice(steps.length);
713
+ var newSteps = createDynamicSteps(newItems, steps.length);
714
+ if (newSteps.length) {
715
+ setSteps(function (prev) {
716
+ return (0, _utils.appendDatasetSteps)(prev, newSteps);
717
+ });
718
+ }
719
+ return;
720
+ }
721
+ // Remove steps if dataset shrank
722
+ if (steps.length > 0 && dataset.length < steps.length) {
723
+ setSteps(function (prev) {
724
+ return (0, _utils.trimStepsToLength)(prev, dataset.length);
725
+ });
726
+ return;
727
+ }
728
+ }
729
+ }, [type, dataset, createDynamicSteps, defaultstepindex, dataset.length]);
697
730
 
698
731
  // Context value
699
732
  var contextValue = (0, _react.useMemo)(function () {
@@ -736,20 +769,22 @@ var WmWizard = /*#__PURE__*/(0, _react.memo)(function (props) {
736
769
  if (type === "dynamic" && (!dataset || dataset.length === 0)) {
737
770
  return __jsx("div", null, nodatamessage);
738
771
  }
772
+ var classValue = className && className.trim() !== "" ? className : "classic";
739
773
  return __jsx(_WizardContext["default"].Provider, {
740
774
  value: contextValue
741
775
  }, __jsx(_material.Box, {
742
- className: (0, _clsx["default"])(DEFAULT_CLS, className, computedStepClass, {
743
- classic: className === null || className === void 0 ? void 0 : className.includes("classic"),
744
- number: className === null || className === void 0 ? void 0 : className.includes("number"),
745
- dottedstepper: className === null || className === void 0 ? void 0 : className.includes("dottedstepper"),
746
- "text-inline": className === null || className === void 0 ? void 0 : className.includes("text-inline"),
747
- iconstepper: className === null || className === void 0 ? void 0 : className.includes("iconstepper")
776
+ className: (0, _clsx["default"])(DEFAULT_CLS, classValue, computedStepClass, {
777
+ classic: classValue === null || classValue === void 0 ? void 0 : classValue.includes("classic"),
778
+ number: classValue === null || classValue === void 0 ? void 0 : classValue.includes("number"),
779
+ dottedstepper: classValue === null || classValue === void 0 ? void 0 : classValue.includes("dottedstepper"),
780
+ "text-inline": classValue === null || classValue === void 0 ? void 0 : classValue.includes("text-inline"),
781
+ iconstepper: classValue === null || classValue === void 0 ? void 0 : classValue.includes("iconstepper")
748
782
  }),
749
783
  style: _objectSpread(_objectSpread({}, styles), {}, {
750
784
  width: width,
751
785
  height: height
752
786
  }),
787
+ hidden: props.hidden,
753
788
  name: name
754
789
  }, __jsx(_material.Box, {
755
790
  className: "app-wizard-heading"
@@ -759,7 +794,7 @@ var WmWizard = /*#__PURE__*/(0, _react.memo)(function (props) {
759
794
  alternativeLabel: alternativeLabel,
760
795
  nonLinear: nonLinear,
761
796
  connector: connector,
762
- className: (0, _clsx["default"])("app-wizard-steps", computedStepClass, className, stepstyle === "justified" ? "nav-justified" : "")
797
+ className: (0, _clsx["default"])("app-wizard-steps", computedStepClass, classValue, stepstyle === "justified" ? "nav-justified" : "")
763
798
  }, steps.map(function (step, index) {
764
799
  // Calculate the visible index by counting only visible steps before this one
765
800
  var visibleIndex = steps.slice(0, index).filter(function (s) {
@@ -770,7 +805,7 @@ var WmWizard = /*#__PURE__*/(0, _react.memo)(function (props) {
770
805
  key: step.name,
771
806
  step: step,
772
807
  index: index,
773
- className: className,
808
+ className: classValue,
774
809
  nonLinear: nonLinear,
775
810
  orientation: orientation,
776
811
  onStepClick: handleStepClick,
@@ -783,9 +818,7 @@ var WmWizard = /*#__PURE__*/(0, _react.memo)(function (props) {
783
818
  }, __jsx(_material.Typography, {
784
819
  variant: "body2",
785
820
  color: wizardMessage.type === "error" ? "error" : "textSecondary"
786
- }, wizardMessage.caption)), (type === "dynamic" ? steps.filter(function (s) {
787
- return s.active;
788
- }) : steps).map(function (step, index) {
821
+ }, wizardMessage.caption)), steps.map(function (step, index) {
789
822
  return __jsx("div", {
790
823
  key: step.name,
791
824
  ref: function ref(el) {
@@ -797,29 +830,25 @@ var WmWizard = /*#__PURE__*/(0, _react.memo)(function (props) {
797
830
  setFormReady(true);
798
831
  }
799
832
  }
800
- if (step.haveForm === undefined) {
801
- var hasFormNow = !!formElement;
802
- updateStep(step.name, {
803
- haveForm: hasFormNow
804
- });
805
- }
806
833
  }
807
834
  },
808
835
  className: (0, _clsx["default"])("app-wizard-step-container", {
809
836
  current: step.active
810
- })
837
+ }),
838
+ hidden: !step.active,
839
+ name: step.name
811
840
  }, step.haveForm ? __jsx("div", {
812
841
  className: (0, _clsx["default"])("app-wizard-step-content", {
813
842
  current: step.active
814
843
  })
815
- }, step.render ? step.render(step, index) : step.children) : __jsx(_form["default"], {
844
+ }, currentStep !== null && currentStep !== void 0 && currentStep.name && step.active && currentStep.render ? currentStep.render(step, index) : step.children) : __jsx(_form["default"], {
816
845
  name: step.name,
817
846
  className: (0, _clsx["default"])("app-wizard-step-content", {
818
847
  current: step.active
819
848
  }),
820
849
  listener: listener,
821
850
  isInsideWizard: true
822
- }, step.render ? step.render(step, index) : step.children));
851
+ }, currentStep !== null && currentStep !== void 0 && currentStep.name && step.active && currentStep.render ? currentStep.render(step, index) : step.children));
823
852
  })), children, type === "static" && wizardSteps.map(function (step, index) {
824
853
  var _step$props;
825
854
  return /*#__PURE__*/(0, _react.cloneElement)(step, {
@@ -827,7 +856,7 @@ var WmWizard = /*#__PURE__*/(0, _react.memo)(function (props) {
827
856
  });
828
857
  })));
829
858
  }, function (prev, next) {
830
- var keys = ["render", "dataset", "className", "styles", "width", "height", "type", "stepstyle", "orientation", "alternativeLabel", "nonLinear", "defaultstep", "defaultstepindex", "message", "cancelable", "enablenext", "nextbtnlabel", "previousbtnlabel", "donebtnlabel", "cancelbtnlabel", "children"];
859
+ var keys = ["render", "dataset", "className", "styles", "width", "height", "type", "stepstyle", "orientation", "alternativeLabel", "nonLinear", "defaultstep", "defaultstepindex", "message", "cancelable", "enablenext", "nextbtnlabel", "previousbtnlabel", "donebtnlabel", "cancelbtnlabel", "children", "hidden"];
831
860
  return keys.every(function (key) {
832
861
  // Never deep-compare children; treat as referential
833
862
  if (key === "children") {
@@ -4,8 +4,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.updateStepFocus = exports.isPromise = exports.handleNavigation = exports.getStepByName = exports.getStepByIndex = exports.getPrevValidStep = exports.getNextValidStep = exports.extendPrevFn = exports.extendNextFn = void 0;
7
+ exports.updateStepFocus = exports.trimStepsToLength = exports.isPromise = exports.handleNavigation = exports.getStepByName = exports.getStepByIndex = exports.getPrevValidStep = exports.getNextValidStep = exports.extendPrevFn = exports.extendNextFn = exports.appendDatasetSteps = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
11
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
12
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
@@ -130,4 +131,48 @@ var extendPrevFn = exports.extendPrevFn = function extendPrevFn(currentStep, cur
130
131
  });
131
132
  updateStepFocus();
132
133
  }
134
+ };
135
+
136
+ // Append deduped dynamic steps to existing steps
137
+ var appendDatasetSteps = exports.appendDatasetSteps = function appendDatasetSteps(prev, incoming) {
138
+ if (!incoming || incoming.length === 0) {
139
+ return prev;
140
+ }
141
+ var existingNames = new Set(prev.map(function (s) {
142
+ return s.name;
143
+ }));
144
+ var deduped = incoming.filter(function (s) {
145
+ if (existingNames.has(s.name)) {
146
+ return false;
147
+ }
148
+ existingNames.add(s.name);
149
+ return true;
150
+ });
151
+ return deduped.length ? [].concat((0, _toConsumableArray2["default"])(prev), (0, _toConsumableArray2["default"])(deduped)) : prev;
152
+ };
153
+
154
+ // Trim steps to target length and normalize flags after shrink
155
+ var trimStepsToLength = exports.trimStepsToLength = function trimStepsToLength(prev, targetLen) {
156
+ var sliced = prev.slice(0, targetLen);
157
+ if (sliced.length === 0) {
158
+ return sliced;
159
+ }
160
+ var activeIndex = sliced.findIndex(function (s) {
161
+ return s.active;
162
+ });
163
+ if (activeIndex === -1 || activeIndex >= targetLen) {
164
+ activeIndex = Math.max(0, targetLen - 1);
165
+ }
166
+ return sliced.map(function (s, idx) {
167
+ return _objectSpread(_objectSpread({}, s), {}, {
168
+ active: idx === activeIndex,
169
+ isDone: false,
170
+ done: idx < activeIndex,
171
+ disabled: false,
172
+ isInitialized: idx === activeIndex ? true : s.isInitialized,
173
+ enableNext: idx === activeIndex ? true : s.enableNext,
174
+ isValid: idx === activeIndex ? true : s.isValid,
175
+ dynamicStepIndex: typeof s.dynamicStepIndex === "number" ? idx : s.dynamicStepIndex
176
+ });
177
+ });
133
178
  };
@@ -47,6 +47,10 @@ var WmWizardstep = /*#__PURE__*/(0, _react.memo)(function (props) {
47
47
  var _useState = (0, _react.useState)(false),
48
48
  isRegistered = _useState[0],
49
49
  setIsRegistered = _useState[1];
50
+ var renderRef = (0, _react.useRef)(render);
51
+ (0, _react.useEffect)(function () {
52
+ renderRef.current = render;
53
+ }, [render]);
50
54
  var stepData = (0, _react.useMemo)(function () {
51
55
  return {
52
56
  name: name || "wizardstep_".concat(Date.now()),
@@ -60,6 +64,13 @@ var WmWizardstep = /*#__PURE__*/(0, _react.memo)(function (props) {
60
64
  enablePrev: !disableprevious,
61
65
  enableDone: !disabledone,
62
66
  isDone: false,
67
+ render: function render() {
68
+ var _renderRef$current;
69
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
70
+ args[_key] = arguments[_key];
71
+ }
72
+ return (_renderRef$current = renderRef.current) === null || _renderRef$current === void 0 ? void 0 : _renderRef$current.call.apply(_renderRef$current, [renderRef].concat(args));
73
+ },
63
74
  done: false,
64
75
  active: false,
65
76
  disabled: false,
@@ -73,7 +84,6 @@ var WmWizardstep = /*#__PURE__*/(0, _react.memo)(function (props) {
73
84
  onNext: onNext,
74
85
  onPrev: onPrev,
75
86
  onSkip: onSkip,
76
- render: render,
77
87
  children: children
78
88
  };
79
89
  }, [name, title, subtitle, iconclass, doneiconclass, show, enableskip, disablenext, disableprevious, disabledone, content, children, dynamicStepIndex, isdynamic, haveForm, onLoad, onNext, onPrev, onSkip]);
@@ -33,6 +33,6 @@ var WmCardContent = function WmCardContent(props) {
33
33
  }
34
34
  }), __jsx(_material.Box, {
35
35
  style: _objectSpread({}, styles)
36
- }, children));
36
+ }, props.renderPartial ? props.renderPartial(props, props.onLoad) : children));
37
37
  };
38
38
  var _default = exports["default"] = (0, _withBaseWrapper["default"])(/*#__PURE__*/_react["default"].memo(WmCardContent));