@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
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.unregisterFormField = exports.shouldRegisterFormField = exports.registerFormFieldSafe = exports.registerFormField = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
9
  var _get = _interopRequireDefault(require("lodash-es/get"));
10
+ var _events = require("../core/constants/events");
10
11
  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
12
  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; } /**
12
13
  * Form State Utility
@@ -43,6 +44,9 @@ var shouldRegisterFormField = exports.shouldRegisterFormField = function shouldR
43
44
  var isNotFormWidget = isFormField(widget.name);
44
45
  return isField && hasFormName && isNotFormWidget;
45
46
  };
47
+ var hasParentForm = function hasParentForm(formName) {
48
+ return Boolean();
49
+ };
46
50
 
47
51
  /**
48
52
  * Registers a form field widget with its parent form in the context
@@ -52,7 +56,8 @@ var shouldRegisterFormField = exports.shouldRegisterFormField = function shouldR
52
56
  * @param widget - The widget/proxy to register
53
57
  * @param widgetProps - The widget properties containing form metadata
54
58
  */
55
- var registerFormField = exports.registerFormField = function registerFormField(widgetsContext, widget, widgetProps) {
59
+ var registerFormField = exports.registerFormField = function registerFormField(widgetsContext, widget, widgetProps, newContext) {
60
+ var _widgetsContext$formN;
56
61
  var formName = widgetProps === null || widgetProps === void 0 ? void 0 : widgetProps.formName;
57
62
  if (!formName || !shouldRegisterFormField(widgetProps)) {
58
63
  return;
@@ -79,6 +84,25 @@ var registerFormField = exports.registerFormField = function registerFormField(w
79
84
  // Register formWidget variants (for form field wrapper components)
80
85
  widgetsContext[formName].formfields["".concat(fieldName, "_formWidget")] = widget;
81
86
  widgetsContext[formName].formWidgets["".concat(fieldName, "_formWidget")] = widget;
87
+ var parentFormName = (_widgetsContext$formN = widgetsContext[formName]) === null || _widgetsContext$formN === void 0 ? void 0 : _widgetsContext$formN.parentForm;
88
+ // If this is a prefab form with a parent form, emit event to register field in parent form's proxy
89
+ if (newContext !== null && newContext !== void 0 && newContext.prefab && newContext !== null && newContext !== void 0 && newContext.parentForm) {
90
+ _events.EVENTEMITTER_METHODS.CHILD_FORM_FIELD_REGISTER_EMIT(newContext === null || newContext === void 0 ? void 0 : newContext.parentForm, {
91
+ childFormName: formName,
92
+ widget: widget,
93
+ widgetProps: widgetProps,
94
+ formKey: formKey,
95
+ fieldName: fieldName
96
+ });
97
+ }
98
+ if (parentFormName && widgetsContext[parentFormName]) {
99
+ widgetsContext[parentFormName].formfields = widgetsContext[parentFormName].formfields || {};
100
+ widgetsContext[parentFormName].formWidgets = widgetsContext[parentFormName].formWidgets || {};
101
+ widgetsContext[parentFormName].formfields[formKey] = widget;
102
+ widgetsContext[parentFormName].formWidgets[fieldName] = widget;
103
+ widgetsContext[parentFormName].formfields["".concat(formKey, "_formWidget")] = widget;
104
+ widgetsContext[parentFormName].formWidgets["".concat(fieldName, "_formWidget")] = widget;
105
+ }
82
106
  };
83
107
 
84
108
  /**
@@ -89,7 +113,7 @@ var registerFormField = exports.registerFormField = function registerFormField(w
89
113
  * @param fieldProps - The field properties to register
90
114
  */
91
115
  var registerFormFieldSafe = exports.registerFormFieldSafe = function registerFormFieldSafe(widgetsContext, fieldProps) {
92
- var _widgetsContext$formN, _widgetsContext$formN2, _widgetsContext$formN3, _widgetsContext$formN4, _widgetsContext$formN5;
116
+ var _widgetsContext$formN7;
93
117
  var formName = fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.formName;
94
118
  if (!formName || !shouldRegisterFormField(fieldProps)) {
95
119
  return;
@@ -99,17 +123,24 @@ var registerFormFieldSafe = exports.registerFormFieldSafe = function registerFor
99
123
  if (!formKey || !fieldName) {
100
124
  return;
101
125
  }
126
+ function register(formName, formKey, fieldName, fieldProps) {
127
+ var _widgetsContext$formN2, _widgetsContext$formN3, _widgetsContext$formN4, _widgetsContext$formN5, _widgetsContext$formN6;
128
+ // ✅ Ensure all nested structures exist using nullish coalescing
129
+ (_widgetsContext$formN2 = widgetsContext[formName]) !== null && _widgetsContext$formN2 !== void 0 ? _widgetsContext$formN2 : widgetsContext[formName] = {};
130
+ (_widgetsContext$formN4 = (_widgetsContext$formN3 = widgetsContext[formName]).formfields) !== null && _widgetsContext$formN4 !== void 0 ? _widgetsContext$formN4 : _widgetsContext$formN3.formfields = {};
131
+ (_widgetsContext$formN6 = (_widgetsContext$formN5 = widgetsContext[formName]).formWidgets) !== null && _widgetsContext$formN6 !== void 0 ? _widgetsContext$formN6 : _widgetsContext$formN5.formWidgets = {};
102
132
 
103
- // ✅ Ensure all nested structures exist using nullish coalescing
104
- (_widgetsContext$formN = widgetsContext[formName]) !== null && _widgetsContext$formN !== void 0 ? _widgetsContext$formN : widgetsContext[formName] = {};
105
- (_widgetsContext$formN3 = (_widgetsContext$formN2 = widgetsContext[formName]).formfields) !== null && _widgetsContext$formN3 !== void 0 ? _widgetsContext$formN3 : _widgetsContext$formN2.formfields = {};
106
- (_widgetsContext$formN5 = (_widgetsContext$formN4 = widgetsContext[formName]).formWidgets) !== null && _widgetsContext$formN5 !== void 0 ? _widgetsContext$formN5 : _widgetsContext$formN4.formWidgets = {};
107
-
108
- // ✅ Only add if not already present
109
- widgetsContext[formName].formfields[formKey] = _objectSpread({}, fieldProps);
110
- widgetsContext[formName].formWidgets[fieldName] = _objectSpread({}, fieldProps);
111
- widgetsContext[formName].formfields["".concat(fieldName, "_formWidget")] = _objectSpread({}, fieldProps);
112
- widgetsContext[formName].formWidgets["".concat(fieldName, "_formWidget")] = _objectSpread({}, fieldProps);
133
+ // ✅ Only add if not already present
134
+ widgetsContext[formName].formfields[formKey] = _objectSpread({}, fieldProps);
135
+ widgetsContext[formName].formWidgets[fieldName] = _objectSpread({}, fieldProps);
136
+ widgetsContext[formName].formfields["".concat(fieldName, "_formWidget")] = _objectSpread({}, fieldProps);
137
+ widgetsContext[formName].formWidgets["".concat(fieldName, "_formWidget")] = _objectSpread({}, fieldProps);
138
+ }
139
+ register(formName, formKey, fieldName, fieldProps);
140
+ var parentForm = (_widgetsContext$formN7 = widgetsContext[formName]) === null || _widgetsContext$formN7 === void 0 ? void 0 : _widgetsContext$formN7.parentForm;
141
+ if (parentForm) {
142
+ register(parentForm, formKey, fieldName, fieldProps);
143
+ }
113
144
  };
114
145
 
115
146
  /**
@@ -4,10 +4,11 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.loginErrorMessage = exports.invokeFormEvent = exports.getFormWidget = exports.getFormProps = exports.getFormData = exports.formValidate = void 0;
7
+ exports.shouldSkipFieldKey = exports.loginErrorMessage = exports.invokeFormEvent = exports.getFormWidget = exports.getFormProps = exports.getFormData = exports.getErrorTypes = exports.formValidate = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
+ var _keys = _interopRequireDefault(require("lodash-es/keys"));
11
12
  /**
12
13
  * Form utility functions for centralizing form operations across widgets
13
14
  */
@@ -184,4 +185,48 @@ var invokeFormEvent = exports.invokeFormEvent = /*#__PURE__*/function () {
184
185
  return function invokeFormEvent(_x2, _x3, _x4, _x5, _x6) {
185
186
  return _ref2.apply(this, arguments);
186
187
  };
187
- }();
188
+ }();
189
+
190
+ /**
191
+ * Extracts error types from react-hook-form error object.
192
+ * react-hook-form error structure: { type: 'required', message: '...' }
193
+ * or { types: { required: '...', minLength: '...' } }
194
+ * @param fieldErrors - The error object from react-hook-form
195
+ * @returns Array of error type strings
196
+ */
197
+ var getErrorTypes = exports.getErrorTypes = function getErrorTypes(fieldErrors) {
198
+ if (!fieldErrors) return [];
199
+
200
+ // Handle multiple errors (when using criteriaMode: 'all')
201
+ if (fieldErrors.types) {
202
+ return (0, _keys["default"])(fieldErrors.types);
203
+ }
204
+
205
+ // Handle single error
206
+ if (fieldErrors.type) {
207
+ return [fieldErrors.type];
208
+ }
209
+ return (0, _keys["default"])(fieldErrors);
210
+ };
211
+
212
+ /**
213
+ * Checks if a field key should be skipped during validation messages iteration.
214
+ * - Skips formWidget entries (duplicates)
215
+ * - Skips underscore variants if dot notation exists (e.g., Department_deptCode when Department.deptCode exists)
216
+ * @param fieldKey - The field key to check
217
+ * @param allFieldKeys - All field keys in the form
218
+ * @returns true if the field should be skipped
219
+ */
220
+ var shouldSkipFieldKey = exports.shouldSkipFieldKey = function shouldSkipFieldKey(fieldKey, allFieldKeys) {
221
+ // Skip formWidget entries (they are duplicates)
222
+ if (fieldKey.includes("formWidget")) return true;
223
+
224
+ // Skip underscore variants if dot notation exists (avoid duplicates)
225
+ if (fieldKey.includes("_")) {
226
+ var dotNotationKey = fieldKey.replace(/_/g, ".");
227
+ if (allFieldKeys.includes(dotNotationKey)) {
228
+ return true;
229
+ }
230
+ }
231
+ return false;
232
+ };
@@ -92,7 +92,7 @@ var handleStepValue = exports.handleStepValue = function handleStepValue(current
92
92
  newValue = getValueInRange(minvalue || 0, minvalue || 0, maxvalue || 0);
93
93
  } else {
94
94
  var stepAmount = direction === "UP" ? step : -step;
95
- newValue = getValueInRange(currentValue + stepAmount, minvalue || 0, maxvalue || 0);
95
+ newValue = getValueInRange(currentValue + stepAmount, minvalue, maxvalue);
96
96
  }
97
97
 
98
98
  // Round to appropriate decimal places
@@ -101,20 +101,20 @@ var handleStepValue = exports.handleStepValue = function handleStepValue(current
101
101
 
102
102
  // Common validation function for both currency and number widgets
103
103
  var validateNumericValue = exports.validateNumericValue = function validateNumericValue(value, required, minvalue, maxvalue, regexp) {
104
- if (!value && required) {
104
+ if ((value === undefined || value === null) && required) {
105
105
  return {
106
106
  isValid: false,
107
107
  message: "This field is required"
108
108
  };
109
109
  }
110
110
  var numValue = typeof value === "string" ? parseNumber(value) : value;
111
- if (!numValue && required) {
111
+ if ((numValue === undefined || numValue === null) && required) {
112
112
  return {
113
113
  isValid: false,
114
114
  message: "This field is required"
115
115
  };
116
116
  }
117
- if (!numValue) {
117
+ if (numValue === undefined || numValue === null) {
118
118
  return {
119
119
  isValid: !required,
120
120
  message: required ? "This field is required" : ""
@@ -150,7 +150,7 @@ var validateNumericValue = exports.validateNumericValue = function validateNumer
150
150
  var handleNumericInputChange = exports.handleNumericInputChange = function handleNumericInputChange(inputValue, inputmode, decimalplaces, setRawInputValue) {
151
151
  var processedInputValue = inputValue;
152
152
  var newVal;
153
- if (inputmode === "financial") {
153
+ if (inputmode === "financial" && decimalplaces > 0) {
154
154
  var digitsOnly = inputValue.replace(/[^\d]/g, "");
155
155
  if (digitsOnly === "") {
156
156
  processedInputValue = "";
@@ -190,7 +190,7 @@ var handleNumericInputChange = exports.handleNumericInputChange = function handl
190
190
  if (decPart && decPart.length > decimalplaces) {
191
191
  return {
192
192
  inputValue: inputValue,
193
- newVal: null
193
+ newVal: Number(_cleanValue)
194
194
  };
195
195
  }
196
196
  processedInputValue = _cleanValue;
@@ -231,6 +231,18 @@ var formatOnBlur = exports.formatOnBlur = function formatOnBlur(datavalue, rawIn
231
231
  // Use the raw input value to preserve trailing zeros
232
232
  return formatNumberWithCommas(rawInputValue, trailingzero, decimalplaces);
233
233
  } else {
234
+ if (rawInputValue.includes(".")) {
235
+ var _rawInputValue$split = rawInputValue.split("."),
236
+ _rawInputValue$split2 = (0, _slicedToArray2["default"])(_rawInputValue$split, 2),
237
+ intPart = _rawInputValue$split2[0],
238
+ decPart = _rawInputValue$split2[1];
239
+ var intWithCommas = new Intl.NumberFormat("en-US").format(Number(intPart));
240
+ var trimmedDecPart = decPart.replace(/0+$/, "");
241
+ if (trimmedDecPart === "") {
242
+ return intWithCommas;
243
+ }
244
+ return "".concat(intWithCommas, ".").concat(trimmedDecPart);
245
+ }
234
246
  return formatNumberWithCommas(datavalue);
235
247
  }
236
248
  }
@@ -241,6 +253,15 @@ var formatOnBlur = exports.formatOnBlur = function formatOnBlur(datavalue, rawIn
241
253
  var handleValidatedValueUpdate = exports.handleValidatedValueUpdate = function handleValidatedValueUpdate(value, name, inputElCurrent, onChangeProp, listenerProp, prevDatavalueState, setPrevDatavalueState, widgetProps) {
242
254
  var stringifiedValue = value === null ? "" : value.toString();
243
255
  var widgetInfo = name && listenerProp !== null && listenerProp !== void 0 && listenerProp.Widgets ? listenerProp.Widgets[name] : undefined;
256
+ if (listenerProp !== null && listenerProp !== void 0 && listenerProp.onChange) {
257
+ listenerProp.onChange(name, _objectSpread(_objectSpread({}, widgetInfo || widgetProps), {}, {
258
+ datavalue: stringifiedValue
259
+ }));
260
+ }
261
+ setPrevDatavalueState(value);
262
+ var updatedProps = _objectSpread(_objectSpread({}, widgetProps), {}, {
263
+ datavalue: stringifiedValue
264
+ });
244
265
  if (onChangeProp) {
245
266
  var syntheticEvent = {
246
267
  target: {
@@ -249,12 +270,6 @@ var handleValidatedValueUpdate = exports.handleValidatedValueUpdate = function h
249
270
  },
250
271
  currentTarget: inputElCurrent
251
272
  };
252
- onChangeProp(syntheticEvent, widgetInfo || widgetProps, value, prevDatavalueState);
253
- }
254
- if (listenerProp !== null && listenerProp !== void 0 && listenerProp.onChange) {
255
- listenerProp.onChange(name, _objectSpread(_objectSpread({}, widgetInfo || {}), {}, {
256
- datavalue: stringifiedValue
257
- }));
273
+ onChangeProp(syntheticEvent, updatedProps, value, prevDatavalueState);
258
274
  }
259
- setPrevDatavalueState(value);
260
275
  };
@@ -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.computeMergedPageParams = void 0;
7
+ exports.extractPartialParamValues = exports.computePartialParamKey = exports.computeMergedPageParams = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
9
  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; }
10
10
  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; }
@@ -21,4 +21,36 @@ var computeMergedPageParams = exports.computeMergedPageParams = function compute
21
21
  return _objectSpread(_objectSpread({}, urlParams), partialParams);
22
22
  }
23
23
  return urlParams;
24
+ };
25
+
26
+ /**
27
+ * Extracts param values from props (excluding functions) for partial components
28
+ * @param params - Array of param keys to extract (e.g., ['toPageName', 'userId'])
29
+ * @param props - Props object containing the param values
30
+ * @returns Object with param keys and their non-function values
31
+ */
32
+ var extractPartialParamValues = exports.extractPartialParamValues = function extractPartialParamValues(params, props) {
33
+ return (params || []).reduce(function (acc, key) {
34
+ var val = props[key];
35
+ // Exclude functions - they get new references on every render
36
+ if (typeof val !== "function") {
37
+ acc[key] = val;
38
+ }
39
+ return acc;
40
+ }, {});
41
+ };
42
+
43
+ /**
44
+ * Computes a stable serialized key from partial param values
45
+ * Used as a dependency for effects that need to react to param changes
46
+ * @param componentType - Type of component ('PARTIAL', 'PAGE', etc.)
47
+ * @param params - Array of param keys to watch
48
+ * @param props - Props object containing the param values
49
+ * @returns JSON string of param values or null for non-partial components
50
+ */
51
+ var computePartialParamKey = exports.computePartialParamKey = function computePartialParamKey(componentType, params, props) {
52
+ if (componentType !== "PARTIAL") {
53
+ return null;
54
+ }
55
+ return JSON.stringify(extractPartialParamValues(params || [], props));
24
56
  };
@@ -4,16 +4,65 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.setWidgetState = exports.getWidgetState = exports.clearWidgetState = void 0;
7
+ exports.setWidgetState = exports.markPageNavigationPending = exports.isPageNavigationPending = exports.getWidgetState = exports.clearWidgetState = exports.clearPageNavigationPending = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
8
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
10
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
10
11
  var _lodashEs = require("lodash-es");
12
+ 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; }
13
+ 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; }
11
14
  // Storage keys
12
15
  var WM_STATE_KEY = "wm_state";
13
16
  var WM_STATE_URL_PARAM = "wm_state";
14
17
  // Default workspace name
15
18
  var DEFAULT_WORKSPACE = "ws";
16
19
 
20
+ // Page navigation tracking - prevents router.replace() from overwriting router.push()
21
+ // when both are called during the same event (e.g., click on container inside list)
22
+ var pageNavigationPending = false;
23
+ var navigationClearTimeout = null;
24
+
25
+ /**
26
+ * Marks that a page navigation (router.push) is about to occur.
27
+ * This prevents URL state persistence (router.replace) from overwriting the navigation.
28
+ * Must be called SYNCHRONOUSLY before router.push() is invoked.
29
+ * Auto-clears after 2 seconds to prevent getting stuck.
30
+ */
31
+ var markPageNavigationPending = exports.markPageNavigationPending = function markPageNavigationPending() {
32
+ pageNavigationPending = true;
33
+
34
+ // Clear any existing timeout
35
+ if (navigationClearTimeout) {
36
+ clearTimeout(navigationClearTimeout);
37
+ }
38
+
39
+ // Auto-clear after 2 seconds to prevent getting stuck
40
+ // (navigation should complete well before this)
41
+ navigationClearTimeout = setTimeout(function () {
42
+ pageNavigationPending = false;
43
+ navigationClearTimeout = null;
44
+ }, 2000);
45
+ };
46
+
47
+ /**
48
+ * Clears the page navigation pending flag.
49
+ * Called after navigation completes or is cancelled.
50
+ */
51
+ var clearPageNavigationPending = exports.clearPageNavigationPending = function clearPageNavigationPending() {
52
+ pageNavigationPending = false;
53
+ if (navigationClearTimeout) {
54
+ clearTimeout(navigationClearTimeout);
55
+ navigationClearTimeout = null;
56
+ }
57
+ };
58
+
59
+ /**
60
+ * Checks if page navigation is currently pending.
61
+ */
62
+ var isPageNavigationPending = exports.isPageNavigationPending = function isPageNavigationPending() {
63
+ return pageNavigationPending;
64
+ };
65
+
17
66
  // Generate storage key for localStorage/sessionStorage (page-specific)
18
67
  var getStorageKey = function getStorageKey() {
19
68
  if (typeof window === "undefined") return WM_STATE_KEY;
@@ -30,14 +79,14 @@ var getCurrentPageName = function getCurrentPageName() {
30
79
  // Convert JSON to URL-friendly encoded format (no quotes needed)
31
80
  var jsonToUri = function jsonToUri(jsonObj) {
32
81
  // Custom stringify that doesn't use quotes
33
- var customStringify = function customStringify(obj) {
82
+ var _customStringify = function customStringify(obj) {
34
83
  if (obj === null) return "null";
35
84
  if (obj === undefined) return "undefined";
36
85
  if (typeof obj === "string") return obj;
37
86
  if (typeof obj === "number" || typeof obj === "boolean") return String(obj);
38
87
  if (Array.isArray(obj)) {
39
88
  if (obj.length === 0) return "!*";
40
- return "!" + obj.map(customStringify).join("_") + "*";
89
+ return "!" + obj.map(_customStringify).join("_") + "*";
41
90
  }
42
91
  if ((0, _typeof2["default"])(obj) === "object") {
43
92
  var pairs = [];
@@ -45,14 +94,14 @@ var jsonToUri = function jsonToUri(jsonObj) {
45
94
  var _Object$entries$_i = (0, _slicedToArray2["default"])(_Object$entries[_i], 2),
46
95
  key = _Object$entries$_i[0],
47
96
  value = _Object$entries$_i[1];
48
- pairs.push(key + "~" + customStringify(value));
97
+ pairs.push(key + "~" + _customStringify(value));
49
98
  }
50
99
  if (pairs.length === 0) return "()";
51
100
  return "(" + pairs.join("_") + ")";
52
101
  }
53
102
  return String(obj);
54
103
  };
55
- return customStringify(jsonObj);
104
+ return _customStringify(jsonObj);
56
105
  };
57
106
 
58
107
  // Decode URL-encoded format back to object
@@ -62,7 +111,7 @@ var uriToJson = function uriToJson(encodedObj) {
62
111
  var decoded = decodeURIComponent(encodedObj);
63
112
 
64
113
  // Custom parser for our format
65
- var parse = function parse(str) {
114
+ var _parse3 = function parse(str) {
66
115
  var startIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
67
116
  if (str[startIndex] === "(") {
68
117
  // Parse object
@@ -81,7 +130,7 @@ var uriToJson = function uriToJson(encodedObj) {
81
130
  i++; // skip '~'
82
131
 
83
132
  // Parse value
84
- var _parse = parse(str, i),
133
+ var _parse = _parse3(str, i),
85
134
  _value = _parse.value,
86
135
  endIndex = _parse.endIndex;
87
136
  obj[key] = _value;
@@ -99,7 +148,7 @@ var uriToJson = function uriToJson(encodedObj) {
99
148
  var arr = [];
100
149
  var _i2 = startIndex + 1;
101
150
  while (_i2 < str.length && str[_i2] !== "*") {
102
- var _parse2 = parse(str, _i2),
151
+ var _parse2 = _parse3(str, _i2),
103
152
  _value2 = _parse2.value,
104
153
  _endIndex = _parse2.endIndex;
105
154
  arr.push(_value2);
@@ -153,8 +202,8 @@ var uriToJson = function uriToJson(encodedObj) {
153
202
  };
154
203
  }
155
204
  };
156
- var _parse3 = parse(decoded),
157
- value = _parse3.value;
205
+ var _parse4 = _parse3(decoded),
206
+ value = _parse4.value;
158
207
  return value;
159
208
  } catch (e) {
160
209
  console.warn("Failed to parse state from URL:", e);
@@ -202,6 +251,7 @@ var setAllStates = function setAllStates(storage, states) {
202
251
  sessionStorage.setItem(getStorageKey(), JSON.stringify(states));
203
252
  break;
204
253
  case "URL":
254
+ var currentUrl = window.location.href;
205
255
  var url = new URL(window.location.href);
206
256
  var urlParams = new URLSearchParams(url.search);
207
257
  if ((0, _lodashEs.keys)(states).length > 0) {
@@ -222,9 +272,18 @@ var setAllStates = function setAllStates(storage, states) {
222
272
  urlParams["delete"](WM_STATE_URL_PARAM);
223
273
  url.search = urlParams.toString();
224
274
  }
225
- window.history.replaceState({
226
- path: url.toString()
227
- }, "", url.toString());
275
+ if (currentUrl !== url.toString()) {
276
+ // Skip URL state update if page navigation is pending to prevent
277
+ // URL update from overwriting the pending router.push()
278
+ if (pageNavigationPending) {
279
+ return;
280
+ }
281
+
282
+ // Use window.history.replaceState() to update URL without triggering re-render
283
+ // This is more efficient than router.replace() which causes component re-renders
284
+ var newPath = url.pathname + url.search;
285
+ window.history.replaceState(_objectSpread({}, window.history.state), "", newPath);
286
+ }
228
287
  break;
229
288
  }
230
289
  };
@@ -5,7 +5,7 @@ var _typeof3 = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.transformFormData = exports.transformDataset = exports.transformDataWithKeys = exports.toggleAllHeaders = exports.setItemByCompare = exports.handleHeaderClick = exports.groupData = exports.getOrderedDataset = exports.extractDataAsArray = exports.datasetItems = exports.convertDataToObject = exports.configureDnD = exports.DataSetItem = void 0;
8
+ exports.transformFormData = exports.transformDataset = exports.transformDataWithKeys = exports.toggleAllHeaders = exports.setItemByCompare = exports.handleHeaderClick = exports.groupData = exports.getUniqObjsByDataField = exports.getOrderedDataset = exports.extractDataAsArray = exports.datasetItems = exports.convertDataToObject = exports.configureDnD = exports.DataSetItem = void 0;
9
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
10
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -89,8 +89,8 @@ var DataSetItem = exports.DataSetItem = /*#__PURE__*/(0, _createClass2["default"
89
89
  (0, _defineProperty2["default"])(this, "match", void 0);
90
90
  (0, _defineProperty2["default"])(this, "dateformat", void 0);
91
91
  });
92
- var _internalTransformDataset = function _internalTransformDataset(dataset, datafield, displayfield, displaylabel, displayexpression, orderby, groupby, dataPath, itemchildren) {
93
- return datasetItems(dataset, datafield, displayfield, displaylabel, displayexpression, orderby, groupby, dataPath, itemchildren);
92
+ var _internalTransformDataset = function _internalTransformDataset(dataset, datafield, displayfield, displaylabel, displayexpression, orderby, groupby, dataPath, itemchildren, match) {
93
+ return _datasetItems(dataset, datafield, displayfield, displaylabel, displayexpression, orderby, groupby, dataPath, itemchildren, match);
94
94
  };
95
95
 
96
96
  // Custom resolver for memoize to handle multiple arguments correctly
@@ -218,7 +218,7 @@ function resolveDataPath(dataSet, dataPath) {
218
218
  return segment.length > 0;
219
219
  });
220
220
  if (pathSegments.length === 0) return dataSet;
221
- var flatten = function flatten(data, path) {
221
+ var _flatten = function flatten(data, path) {
222
222
  if (path.length === 0) return data;
223
223
  var nextKey = path[0];
224
224
  var remainingPath = path.slice(1);
@@ -231,10 +231,10 @@ function resolveDataPath(dataSet, dataPath) {
231
231
  if (!item || (0, _typeof2["default"])(item) !== "object") continue;
232
232
  var value = item[nextKey];
233
233
  if (Array.isArray(value)) {
234
- var next = flatten(value, remainingPath);
234
+ var next = _flatten(value, remainingPath);
235
235
  result = result.concat(next);
236
236
  } else if (((0, _typeof2["default"])(value) === "object" || typeof value === "string") && value !== null) {
237
- var _next = flatten([value], remainingPath);
237
+ var _next = _flatten([value], remainingPath);
238
238
  result = result.concat(_next);
239
239
  }
240
240
  // else: primitive types or undefined → skip
@@ -246,7 +246,7 @@ function resolveDataPath(dataSet, dataPath) {
246
246
  }
247
247
  return result;
248
248
  };
249
- return flatten(dataSet, pathSegments);
249
+ return _flatten(dataSet, pathSegments);
250
250
  }
251
251
  var transformFormData = exports.transformFormData = function transformFormData(context, dataSet, myDataField, displayOptions, startIndex, scope, dataPath) {
252
252
  if (dataPath) {
@@ -307,9 +307,13 @@ var transformFormData = exports.transformFormData = function transformFormData(c
307
307
  expression: displayOptions.displayExpr,
308
308
  bindExpression: displayOptions.bindDisplayExpr
309
309
  }, option);
310
+ // If label is empty and there's no displayexpression/displayfield, use datafield value (key) as label
311
+ var hasDisplayExpr = displayOptions === null || displayOptions === void 0 ? void 0 : displayOptions.displayExpr;
312
+ var hasDisplayField = displayOptions === null || displayOptions === void 0 ? void 0 : displayOptions.displayField; // Check if displayfield was originally provided
313
+ var finalLabel = isDefined(label) && label !== null ? label.toString() : !hasDisplayExpr && !hasDisplayField && key !== undefined && key !== null ? String(key) : "";
310
314
  var dataSetItem = {
311
315
  key: key,
312
- label: isDefined(label) && label !== null ? label.toString() : "",
316
+ label: finalLabel,
313
317
  value: myDataField === ALLFIELDS ? option : key,
314
318
  dataObject: option,
315
319
  // represents the object when datafield is ALLFIELDS. This is used as innerItem while grouping the datasetItems.
@@ -328,18 +332,20 @@ var transformFormData = exports.transformFormData = function transformFormData(c
328
332
  }
329
333
  return data;
330
334
  };
331
- var getUniqObjsByDataField = function getUniqObjsByDataField(data, dataField, displayField, allowEmptyFields) {
332
- if (!allowEmptyFields) {
333
- data = (0, _lodashEs.filter)(data, function (item) {
334
- return isDefined(item.key) && item.key !== "";
335
- });
335
+ var getUniqObjsByDataField = exports.getUniqObjsByDataField = function getUniqObjsByDataField(data, dataField, displayField, allowEmptyFields) {
336
+ var uniqData;
337
+ var isAllFields = dataField === ALLFIELDS;
338
+ uniqData = isAllFields ? (0, _lodashEs.uniqWith)(data, _lodashEs.isEqual) : (0, _lodashEs.uniqBy)(data, "key");
339
+ if (!displayField || allowEmptyFields) {
340
+ return uniqData;
336
341
  }
337
- return (0, _lodashEs.uniqWith)(data, function (obj1, obj2) {
338
- var val1 = (0, _lodashEs.get)(obj1.dataObject, dataField);
339
- var val2 = (0, _lodashEs.get)(obj2.dataObject, dataField);
340
- var dVal1 = (0, _lodashEs.get)(obj1.dataObject, displayField);
341
- var dVal2 = (0, _lodashEs.get)(obj2.dataObject, displayField);
342
- return (0, _lodashEs.isEqual)(val1, val2) && (0, _lodashEs.isEqual)(dVal1, dVal2);
342
+
343
+ // return objects having non empty datafield and display field values.
344
+ return (0, _lodashEs.filter)(uniqData, function (obj) {
345
+ if (isAllFields) {
346
+ return (0, _lodashEs.trim)(obj.label);
347
+ }
348
+ return (0, _lodashEs.trim)(obj.key) && (0, _lodashEs.trim)(obj.label);
343
349
  });
344
350
  };
345
351
  var setItemByCompare = exports.setItemByCompare = function setItemByCompare(datasetItems, compareWithDataObj, compareByField) {
@@ -359,12 +365,13 @@ var getSortedGroupedData = function getSortedGroupedData(groupedLiData, groupBy,
359
365
  });
360
366
  return (0, _lodashEs.sortBy)(data, "data[0].dataObject.".concat(groupBy));
361
367
  };
362
- var datasetItems = exports.datasetItems = function datasetItems(dataset, datafield, displayfield, displaylabel, displayexpression, orderby, groupby, dataPath, itemchildren) {
368
+ var _datasetItems = exports.datasetItems = function datasetItems(dataset, datafield, displayfield, displaylabel, displayexpression, orderby, groupby, dataPath, itemchildren, match) {
363
369
  if (!dataset) return [];
364
370
  var items = transformFormData(null, dataset, datafield, {
365
371
  displayField: displayfield || displaylabel,
366
372
  displayExpr: displayexpression
367
373
  }, 0, null, dataPath);
374
+ items = getUniqObjsByDataField(items, datafield, displayfield || displaylabel, false);
368
375
  if (orderby) {
369
376
  var orderFields = orderby.split(",");
370
377
  items.sort(function (a, b) {
@@ -379,7 +386,11 @@ var datasetItems = exports.datasetItems = function datasetItems(dataset, datafie
379
386
  order = _orderField$split2[1];
380
387
  var aVal = String(a.dataObject[field] || a.label || "");
381
388
  var bVal = String(b.dataObject[field] || b.label || "");
382
- var comparison = order === "desc" ? bVal.localeCompare(aVal) : aVal.localeCompare(bVal);
389
+ var comparison = order === "desc" ? bVal.localeCompare(aVal, "en", {
390
+ numeric: true
391
+ }) : aVal.localeCompare(bVal, "en", {
392
+ numeric: true
393
+ });
383
394
  if (comparison !== 0) return comparison;
384
395
  }
385
396
  } catch (err) {
@@ -400,7 +411,7 @@ var datasetItems = exports.datasetItems = function datasetItems(dataset, datafie
400
411
  var _itemchildren;
401
412
  children = (_itemchildren = itemchildren(item === null || item === void 0 ? void 0 : item.dataObject)) !== null && _itemchildren !== void 0 ? _itemchildren : itemchildren(item);
402
413
  if (Array.isArray(children)) {
403
- var sortedChildren = datasetItems(children, datafield, displayfield, displaylabel, displayexpression, orderby, groupby);
414
+ var sortedChildren = _datasetItems(children, datafield, displayfield, displaylabel, displayexpression, orderby, groupby, dataPath, itemchildren, match);
404
415
  if (itemchildren(item === null || item === void 0 ? void 0 : item.dataObject)) {
405
416
  item.dataObject.children = sortedChildren;
406
417
  } else if (itemchildren(item)) {
@@ -412,7 +423,7 @@ var datasetItems = exports.datasetItems = function datasetItems(dataset, datafie
412
423
  children = (_item$dataObject$item = item === null || item === void 0 || (_item$dataObject = item.dataObject) === null || _item$dataObject === void 0 ? void 0 : _item$dataObject[itemchildren]) !== null && _item$dataObject$item !== void 0 ? _item$dataObject$item : item === null || item === void 0 ? void 0 : item[itemchildren];
413
424
  if (Array.isArray(children)) {
414
425
  var _item$dataObject2;
415
- var _sortedChildren = datasetItems(children, datafield, displayfield, displaylabel, displayexpression, orderby, groupby);
426
+ var _sortedChildren = _datasetItems(children, datafield, displayfield, displaylabel, displayexpression, orderby, groupby, dataPath, itemchildren, match);
416
427
  if (item !== null && item !== void 0 && (_item$dataObject2 = item.dataObject) !== null && _item$dataObject2 !== void 0 && _item$dataObject2[itemchildren]) {
417
428
  item.dataObject.children = _sortedChildren;
418
429
  } else if (item !== null && item !== void 0 && item[itemchildren]) {
@@ -427,7 +438,7 @@ var datasetItems = exports.datasetItems = function datasetItems(dataset, datafie
427
438
  _iterator4.f();
428
439
  }
429
440
  if (groupby) {
430
- items = groupData(null, items, groupby, "word", "", "");
441
+ items = groupData(null, items, groupby, match || "word", "", "");
431
442
  }
432
443
  return items;
433
444
  };