@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.
- package/actions/base-action.js +5 -7
- package/actions/login-action.js +7 -8
- package/actions/logout-action.js +5 -7
- package/actions/navigation-action.js +73 -18
- package/actions/notification-action.js +22 -8
- package/actions/timer-action.js +13 -15
- package/actions/toast.js +4 -2
- package/actions/toast.service.js +1 -2
- package/components/advanced/carousel/index.js +1 -1
- package/components/advanced/carousel/template.js +1 -1
- package/components/basic/anchor/index.js +31 -11
- package/components/basic/html/index.js +115 -24
- package/components/basic/icon/index.js +2 -1
- package/components/basic/iframe/index.js +2 -1
- package/components/basic/label/index.js +12 -9
- package/components/basic/message/index.js +12 -3
- package/components/basic/picture/index.js +11 -4
- package/components/basic/progress-bar/index.js +4 -1
- package/components/basic/progress-circle/index.js +34 -28
- package/components/basic/progress-circle/props.js +10 -2
- package/components/basic/richtexteditor/index.js +95 -94
- package/components/basic/search/index.js +401 -156
- package/components/basic/search/providers.js +126 -61
- package/components/basic/spinner/index.js +2 -1
- package/components/basic/tree/index.js +34 -34
- package/components/basic/tree/utils.js +10 -4
- package/components/chart/components/barColumnChart/index.js +36 -33
- package/components/chart/components/bubbleChart/index.js +35 -25
- package/components/chart/components/chartLegend/utils.js +2 -1
- package/components/chart/components/cumulativeLineChart/index.js +30 -26
- package/components/chart/components/lineAreaChart/index.js +50 -32
- package/components/chart/components/pieDonutChart/index.js +13 -4
- package/components/chart/hooks/useXAxisConfig.js +15 -8
- package/components/chart/index.js +223 -53
- package/components/chart/utils.js +12 -1
- package/components/constants.js +5 -2
- package/components/container/accordion/accordion-pane/index.js +17 -12
- package/components/container/accordion/index.js +9 -4
- package/components/container/alignment-utils.js +56 -1
- package/components/container/index.js +49 -20
- package/components/container/panel/components/panel-header/index.js +3 -4
- package/components/container/panel/index.js +15 -10
- package/components/container/repeat-template/index.js +33 -0
- package/components/container/tabs/index.js +83 -14
- package/components/container/tabs/tab-pane/index.js +33 -10
- package/components/container/tabs/utils.js +51 -0
- package/components/container/wizard/components/StepComponents.js +2 -1
- package/components/container/wizard/components/WizardStep.js +2 -1
- package/components/container/wizard/index.js +64 -35
- package/components/container/wizard/utils.js +46 -1
- package/components/container/wizard/wizard-step/index.js +11 -1
- package/components/data/card/card-content/index.js +1 -1
- package/components/data/form/base-form/index.js +985 -183
- package/components/data/form/base-form/props.js +3 -1
- package/components/data/form/base-form/utils.js +159 -1
- package/components/data/form/dynamic-fields/constant.js +53 -0
- package/components/data/form/dynamic-fields/index.js +10 -45
- package/components/data/form/dynamic-fields/utils.js +37 -2
- package/components/data/form/form-action/index.js +5 -4
- package/components/data/form/form-context.js +5 -1
- package/components/data/form/form-controller/utils.js +84 -0
- package/components/data/form/form-controller/validation-contrustor.js +402 -189
- package/components/data/form/form-controller/withFormController.js +191 -52
- package/components/data/form/form-field/base-field.js +67 -45
- package/components/data/form/form-field/index.js +28 -5
- package/components/data/form/form-header/index.js +3 -4
- package/components/data/form/index.js +20 -1
- package/components/data/list/components/ListDND.js +2 -1
- package/components/data/list/components/ListItem.js +6 -2
- package/components/data/list/components/ListItemWithTemplate.js +46 -2
- package/components/data/list/components/ListItems.js +17 -26
- package/components/data/list/components/ListPagination.js +3 -3
- package/components/data/list/components/StandardListItems.js +3 -4
- package/components/data/list/hooks/useListEffects.js +55 -14
- package/components/data/list/hooks/useListEventHandlers.js +3 -1
- package/components/data/list/hooks/useListState.js +3 -1
- package/components/data/list/hooks/usePaginatedGroupedData.js +18 -5
- package/components/data/list/index.js +74 -55
- package/components/data/list/utils/list-helpers.js +73 -35
- package/components/data/list/utils/list-widget-methods.js +138 -95
- package/components/data/live-filter/index.js +26 -15
- package/components/data/live-form/index.js +51 -18
- package/components/data/live-form/props.js +1 -1
- package/components/data/pagination/components/BasicPagination.js +71 -16
- package/components/data/pagination/components/PageSizeSelector.js +8 -3
- package/components/data/pagination/components/TotalRecords.js +1 -5
- package/components/data/pagination/hooks/usePagination.js +349 -66
- package/components/data/pagination/index.js +137 -19
- package/components/data/table/components/AddNewRow.js +5 -1
- package/components/data/table/components/EditableCell.js +2 -2
- package/components/data/table/components/RowCells.js +64 -0
- package/components/data/table/components/RowExpansionButton.js +2 -2
- package/components/data/table/components/SummaryCell.js +111 -0
- package/components/data/table/components/SummaryRow.js +54 -0
- package/components/data/table/components/SummaryRowFooter.js +46 -0
- package/components/data/table/components/TableBody.js +61 -59
- package/components/data/table/components/TableDataRow.js +109 -0
- package/components/data/table/components/TableFilters.js +225 -121
- package/components/data/table/components/TableHeader.js +291 -23
- package/components/data/table/components/TablePanelHeading.js +139 -8
- package/components/data/table/components/index.js +22 -1
- package/components/data/table/hooks/use-edited-rows.js +141 -0
- package/components/data/table/hooks/useCellState.js +5 -12
- package/components/data/table/hooks/useFormWidget.js +58 -52
- package/components/data/table/hooks/usePaginationState.js +45 -24
- package/components/data/table/hooks/usePanelStructure.js +4 -4
- package/components/data/table/hooks/useRowHandlers.js +39 -5
- package/components/data/table/hooks/useRowSelection.js +244 -50
- package/components/data/table/hooks/useServerSideSorting.js +81 -37
- package/components/data/table/hooks/useTableColumns.js +211 -118
- package/components/data/table/hooks/useTableData.js +54 -9
- package/components/data/table/hooks/useTableEdit.js +272 -97
- package/components/data/table/hooks/useTableEffects.js +31 -13
- package/components/data/table/hooks/useTableFilter.js +1 -1
- package/components/data/table/hooks/useTableInitialization.js +23 -22
- package/components/data/table/hooks/useTableState.js +11 -5
- package/components/data/table/hooks/useTableStateManager.js +140 -65
- package/components/data/table/index.js +637 -274
- package/components/data/table/live-table/index.js +54 -22
- package/components/data/table/table-action/index.js +1 -1
- package/components/data/table/table-group/index.js +26 -0
- package/components/data/table/table-row-action/index.js +32 -18
- package/components/data/table/utils/buildSelectionColumns.js +12 -21
- package/components/data/table/utils/columnBuilder.js +29 -14
- package/components/data/table/utils/columnProxy.js +68 -1
- package/components/data/table/utils/constants.js +6 -2
- package/components/data/table/utils/crud-handlers.js +68 -63
- package/components/data/table/utils/groupHeaderUtils.js +102 -0
- package/components/data/table/utils/index.js +210 -21
- package/components/data/table/utils/renderDisplayCell.js +6 -6
- package/components/data/table/utils/selectionUtils.js +25 -26
- package/components/data/table/utils/validation.js +1 -0
- package/components/data/utils/filter-field-util.js +3 -3
- package/components/dialogs/alert-dialog/index.js +1 -1
- package/components/dialogs/confirm-dialog/index.js +1 -1
- package/components/dialogs/dialog/index.js +4 -1
- package/components/dialogs/dialog-content/index.js +3 -1
- package/components/dialogs/dialog-header/index.js +2 -2
- package/components/dialogs/iframe-dialog/index.js +11 -5
- package/components/dialogs/index.js +1 -1
- package/components/dialogs/login-dialog/index.js +1 -1
- package/components/dialogs/page-dialog/index.js +1 -1
- package/components/form/button/index.js +33 -7
- package/components/input/calendar/index.js +18 -6
- package/components/input/chips/index.js +99 -28
- package/components/input/chips/utils.js +34 -4
- package/components/input/color-picker/index.js +74 -25
- package/components/input/composite/index.js +3 -3
- package/components/input/currency/index.js +35 -49
- package/components/input/default/checkbox/index.js +23 -28
- package/components/input/default/checkboxset/index.js +38 -18
- package/components/input/default/checkboxset/utils.js +30 -0
- package/components/input/default/radioset/index.js +36 -39
- package/components/input/default/switch/index.js +30 -13
- package/components/input/epoch/date/index.js +130 -69
- package/components/input/epoch/date/utils.js +94 -1
- package/components/input/epoch/datetime/index.js +72 -22
- package/components/input/epoch/datetime/utils.js +49 -10
- package/components/input/epoch/time/index.js +68 -19
- package/components/input/epoch/time/utils.js +62 -14
- package/components/input/fileupload/Utils.js +12 -7
- package/components/input/fileupload/components/MultiUpload.js +2 -6
- package/components/input/fileupload/components/SingleUpload.js +3 -7
- package/components/input/fileupload/index.js +6 -10
- package/components/input/fileupload/useFileUpload.js +16 -5
- package/components/input/number/index.js +158 -43
- package/components/input/rating/index.js +90 -7
- package/components/input/select/index.js +209 -72
- package/components/input/slider/index.js +84 -26
- package/components/input/text/index.js +38 -18
- package/components/input/text/util.js +283 -130
- package/components/input/textarea/index.js +13 -10
- package/components/input/upload/index.js +124 -0
- package/components/input/upload/props.js +5 -0
- package/components/input/util/index.js +11 -0
- package/components/navbar/index.js +51 -3
- package/components/navbar/nav/index.js +46 -16
- package/components/navbar/nav-item/index.js +11 -5
- package/components/navigation/menu/components/ListItems.js +3 -0
- package/components/navigation/menu/constants.js +2 -1
- package/components/navigation/menu/hooks/useHoverState.hook.js +48 -0
- package/components/navigation/menu/hooks/useKeyboardMovements.hook.js +37 -0
- package/components/navigation/menu/hooks/useTransformedDataset.hook.js +15 -0
- package/components/navigation/menu/index.js +326 -188
- package/components/navigation/menu/utils/action-task.js +14 -0
- package/components/navigation/menu/utils/role-filter.js +76 -0
- package/components/navigation/popover/index.js +105 -32
- package/components/page/partial-container/index.js +34 -5
- package/components/prefab/index.js +2 -4
- package/context/PrefabContext.js +10 -6
- package/context/WidgetProvider.js +30 -31
- package/core/app.service.js +1 -1
- package/core/constants/events.js +57 -1
- package/core/dialog.service.js +1 -2
- package/core/event-notifier.js +1 -2
- package/core/formatter/array-formatters.js +33 -0
- package/core/formatter/date-formatters.js +2 -4
- package/core/formatter/index.js +2 -1
- package/core/formatter/number-formatters.js +5 -10
- package/core/formatter/security-formatters.js +2 -4
- package/core/formatter/string-formatters.js +3 -6
- package/core/proxy-service.js +85 -13
- package/core/script-registry.js +108 -48
- package/core/util/common.js +4 -4
- package/core/util/compare.js +30 -0
- package/core/util/dom.js +8 -8
- package/core/util/index.js +16 -6
- package/core/util/safe-is-equal.js +156 -0
- package/core/util/security.js +1 -2
- package/core/util/utils.js +16 -7
- package/higherOrder/BaseApp.js +108 -65
- package/higherOrder/BaseDateTime.js +31 -13
- package/higherOrder/BasePage.js +268 -144
- package/higherOrder/BasePartial.js +1 -1
- package/higherOrder/BasePrefab.js +33 -15
- package/higherOrder/DataNav.js +99 -16
- package/higherOrder/helper.js +41 -3
- package/higherOrder/withBaseWrapper.js +41 -28
- package/hooks/useAuth.js +11 -5
- package/hooks/useHttp.js +280 -94
- package/mui-config/theme-provider.js +1 -1
- package/mui-config/theme.js +1 -1
- package/package-lock.json +840 -740
- package/package.json +8 -8
- package/store/bindActions/i18nActions.js +18 -0
- package/store/index.js +3 -1
- package/store/slices/appConfigSlice.js +2 -2
- package/store/slices/authSlice.js +31 -28
- package/store/slices/i18nSlice.js +2 -2
- package/store/slices/navigationSlice.js +35 -0
- package/store/viewport.service.js +255 -0
- package/utils/attr.js +35 -0
- package/utils/dataset-util.js +1 -2
- package/utils/form-state.util.js +43 -12
- package/utils/form-utils.js +47 -2
- package/utils/format-util.js +28 -13
- package/utils/page-params-util.js +33 -1
- package/utils/state-persistance.js +72 -13
- package/utils/transformedDataset-utils.js +35 -24
- package/variables/base-variable.js +12 -14
- package/variables/crud-variable.js +225 -0
- package/variables/live-variable.js +56 -20
- package/variables/metadata.service.js +123 -0
- package/variables/model-variable.js +21 -15
- package/variables/service-variable.js +88 -83
package/utils/form-state.util.js
CHANGED
|
@@ -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$
|
|
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
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
widgetsContext[formName]
|
|
111
|
-
|
|
112
|
-
|
|
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
|
/**
|
package/utils/form-utils.js
CHANGED
|
@@ -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
|
+
};
|
package/utils/format-util.js
CHANGED
|
@@ -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
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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:
|
|
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,
|
|
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
|
|
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(
|
|
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 + "~" +
|
|
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
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
|
157
|
-
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
|
-
|
|
226
|
-
|
|
227
|
-
|
|
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
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
|
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:
|
|
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
|
-
|
|
333
|
-
|
|
334
|
-
|
|
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
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
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
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
};
|