@wavemaker/react-runtime 11.15.3-rc.647481 → 11.15.4-rc.250
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/basic/richtexteditor/index.js +53 -9
- package/components/chart/index.js +2 -11
- package/components/common/AppSpinner.js +4 -1
- package/components/container/panel/components/panel-content/index.js +18 -0
- package/components/container/wizard/index.js +1 -1
- package/components/data/form/base-form/index.js +156 -105
- package/components/data/form/form-context.js +17 -1
- package/components/data/form/form-controller/hooks/index.js +127 -0
- package/components/data/form/form-controller/utils.js +52 -1
- package/components/data/form/form-controller/withFormController.js +10 -162
- package/components/data/form/form-dynamic-section/index.js +46 -0
- package/components/data/form/form-dynamic-section/props.js +5 -0
- package/components/data/form/index.js +5 -0
- package/components/data/list/hooks/useListEffects.js +10 -3
- package/components/data/list/hooks/useListEventHandlers.js +20 -15
- package/components/data/list/index.js +7 -8
- package/components/data/list/utils/list-helpers.js +21 -1
- package/components/data/list/utils/list-widget-methods.js +2 -0
- package/components/data/list/utils/widget-instance-utils.js +82 -0
- package/components/data/pagination/components/BasicPagination.js +1 -0
- package/components/data/pagination/components/PageSizeSelector.js +11 -3
- package/components/data/pagination/index.js +1 -2
- package/components/data/table/hooks/useServerSideSorting.js +10 -16
- package/components/data/table/index.js +55 -57
- package/components/data/table/utils/buildSelectionColumns.js +23 -32
- package/components/data/table/utils/index.js +7 -2
- package/components/dialogs/index.js +6 -0
- package/components/input/default/checkbox/index.js +5 -2
- package/components/input/epoch/date/components/DatePickerPopover.js +17 -2
- package/components/input/epoch/date/index.js +21 -17
- package/components/input/epoch/datetime/index.js +2 -4
- package/components/navigation/popover/index.js +8 -21
- package/components/page/partial-container/index.js +19 -1
- package/context/WidgetProvider.js +28 -14
- package/core/proxy-service.js +1 -2
- package/core/util/compare.js +6 -0
- package/higherOrder/BasePage.js +1 -1
- package/higherOrder/withBaseWrapper.js +22 -8
- package/libs/index.js +3 -10
- package/libs/prefab/index.js +20 -0
- package/package-lock.json +119 -90
- package/package.json +2 -2
- package/utils/lib-error-skipper.js +5 -2
- package/utils/state-persistance.js +42 -33
- package/utils/widget-cleanup-util.js +30 -0
- package/variables/live-variable.js +18 -0
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
6
7
|
exports.extractDynamicValidationProps = extractDynamicValidationProps;
|
|
8
|
+
exports.shouldShowErrorMessage = exports.processFieldValue = exports.getErrorState = void 0;
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
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; }
|
|
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; }
|
|
7
13
|
function resolveValue(value) {
|
|
8
14
|
if (value === null || value === undefined) return undefined;
|
|
9
15
|
if (typeof value === "function") {
|
|
@@ -81,4 +87,49 @@ function extractDynamicValidationProps(validators, rules) {
|
|
|
81
87
|
result.excludedays = result.excludedays.join(",");
|
|
82
88
|
}
|
|
83
89
|
return result;
|
|
84
|
-
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Utility functions
|
|
93
|
+
var processFieldValue = exports.processFieldValue = function processFieldValue(fieldValue, type, datafield) {
|
|
94
|
+
// If fieldValue is an object and datafield is specified, extract the value
|
|
95
|
+
if (fieldValue && (0, _typeof2["default"])(fieldValue) === "object" && !Array.isArray(fieldValue) && datafield) {
|
|
96
|
+
fieldValue = datafield === "All Fields" ? fieldValue : fieldValue[datafield];
|
|
97
|
+
}
|
|
98
|
+
if (type === "number") {
|
|
99
|
+
return fieldValue === "" || fieldValue === null || fieldValue === undefined ? "" : fieldValue;
|
|
100
|
+
}
|
|
101
|
+
return fieldValue;
|
|
102
|
+
};
|
|
103
|
+
var getErrorState = exports.getErrorState = function getErrorState(fieldState, validationType, touched) {
|
|
104
|
+
switch (validationType) {
|
|
105
|
+
case "default":
|
|
106
|
+
return {
|
|
107
|
+
error: touched && !!fieldState.error,
|
|
108
|
+
errorMessage: touched && fieldState.error ? fieldState.error.message : undefined,
|
|
109
|
+
fieldState: fieldState
|
|
110
|
+
};
|
|
111
|
+
case "html":
|
|
112
|
+
return {
|
|
113
|
+
error: touched && !!fieldState.error,
|
|
114
|
+
errorMessage: touched && fieldState.error ? fieldState.error.message : undefined,
|
|
115
|
+
fieldState: fieldState
|
|
116
|
+
};
|
|
117
|
+
case "none":
|
|
118
|
+
return {
|
|
119
|
+
error: false,
|
|
120
|
+
errorMessage: undefined,
|
|
121
|
+
fieldState: _objectSpread(_objectSpread({}, fieldState), {}, {
|
|
122
|
+
error: undefined
|
|
123
|
+
})
|
|
124
|
+
};
|
|
125
|
+
default:
|
|
126
|
+
return {
|
|
127
|
+
error: false,
|
|
128
|
+
errorMessage: undefined,
|
|
129
|
+
fieldState: undefined
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
var shouldShowErrorMessage = exports.shouldShowErrorMessage = function shouldShowErrorMessage(validationType, fieldState, touched) {
|
|
134
|
+
return validationType !== "none" && (validationType === "default" && fieldState.error || validationType === "html" && fieldState.error);
|
|
135
|
+
};
|
|
@@ -8,171 +8,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
8
8
|
exports["default"] = void 0;
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
-
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
12
11
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
12
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
14
|
-
var
|
|
13
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
15
14
|
var _reactHookForm = require("react-hook-form");
|
|
16
15
|
var _clsx = _interopRequireDefault(require("clsx"));
|
|
17
|
-
var _validationContrustor = require("@wavemaker/react-runtime/components/data/form/form-controller/validation-contrustor");
|
|
18
16
|
var _WidgetProvider = require("@wavemaker/react-runtime/context/WidgetProvider");
|
|
19
17
|
var _formContext = require("@wavemaker/react-runtime/components/data/form/form-context");
|
|
20
18
|
var _utils = require("./utils");
|
|
19
|
+
var _hooks = require("./hooks");
|
|
21
20
|
var _excluded = ["formRef", "formKey", "name", "datavalue", "maxDataValue", "isMaxWidget", "defaultvalue", "validators", "asyncValidators", "required", "maxchars", "minvalue", "maxvalue", "regexp", "validationmessage", "hint", "type", "observe", "onBlur", "fieldName"];
|
|
22
21
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
|
|
23
22
|
var __jsx = _react["default"].createElement;
|
|
24
23
|
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; }
|
|
25
24
|
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; }
|
|
26
|
-
// Custom hooks for better separation of concerns
|
|
27
|
-
var useFormRegistration = function useFormRegistration(name, fieldProxy, contextFormRef) {
|
|
28
|
-
var hasRegisteredRef = (0, _react.useRef)(false);
|
|
29
|
-
(0, _react.useEffect)(function () {
|
|
30
|
-
if (contextFormRef !== null && contextFormRef !== void 0 && contextFormRef.registerFormWidget && fieldProxy && !hasRegisteredRef.current) {
|
|
31
|
-
contextFormRef.registerFormWidget(name, fieldProxy);
|
|
32
|
-
hasRegisteredRef.current = true;
|
|
33
|
-
}
|
|
34
|
-
}, [fieldProxy, name, contextFormRef]);
|
|
35
|
-
};
|
|
36
|
-
var useExternalDataSync = function useExternalDataSync(datavalue, fieldRef) {
|
|
37
|
-
(0, _react.useEffect)(function () {
|
|
38
|
-
if (fieldRef.current && datavalue !== undefined) {
|
|
39
|
-
var currentValue = fieldRef.current.value;
|
|
40
|
-
if (currentValue !== datavalue) {
|
|
41
|
-
fieldRef.current.onChange(datavalue);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}, [datavalue]);
|
|
45
|
-
};
|
|
46
|
-
var useDefaultValueSync = function useDefaultValueSync(defaultvalue, datavalue, fieldRef) {
|
|
47
|
-
var hasInitializedRef = (0, _react.useRef)(false);
|
|
48
|
-
(0, _react.useEffect)(function () {
|
|
49
|
-
// Only sync defaultvalue if:
|
|
50
|
-
// 1. We haven't initialized yet
|
|
51
|
-
// 2. There's a defaultvalue provided
|
|
52
|
-
// 3. There's no datavalue (datavalue takes precedence)
|
|
53
|
-
// 4. The field is registered
|
|
54
|
-
if (!hasInitializedRef.current && defaultvalue !== undefined && datavalue === undefined && fieldRef.current) {
|
|
55
|
-
var currentValue = fieldRef.current.value;
|
|
56
|
-
if (currentValue === undefined || currentValue === null || currentValue === "") {
|
|
57
|
-
fieldRef.current.onChange(defaultvalue);
|
|
58
|
-
hasInitializedRef.current = true;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}, [defaultvalue, datavalue]);
|
|
62
|
-
};
|
|
63
|
-
var useValidationRules = function useValidationRules(validationType, validators, asyncValidators, required, maxchars, regexp, validationmessage, minvalue, maxvalue, form) {
|
|
64
|
-
if (validationType === "none") {
|
|
65
|
-
return {};
|
|
66
|
-
}
|
|
67
|
-
var combinedValidators = [].concat((0, _toConsumableArray2["default"])(validators || []), (0, _toConsumableArray2["default"])(asyncValidators || []));
|
|
68
|
-
var hasValidatorType = function hasValidatorType(type) {
|
|
69
|
-
return validators === null || validators === void 0 ? void 0 : validators.some(function (v) {
|
|
70
|
-
return typeof v !== "function" && v.type === type;
|
|
71
|
-
});
|
|
72
|
-
};
|
|
73
|
-
if (required && !hasValidatorType("required")) {
|
|
74
|
-
combinedValidators.push({
|
|
75
|
-
type: "required",
|
|
76
|
-
validator: true,
|
|
77
|
-
errorMessage: validationmessage || "This field is required"
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
if (maxchars !== undefined) {
|
|
81
|
-
combinedValidators.push({
|
|
82
|
-
type: "maxchars",
|
|
83
|
-
validator: maxchars,
|
|
84
|
-
errorMessage: validationmessage || "Maximum length is ".concat(maxchars, " characters.")
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
var normalizedMin = minvalue !== undefined && minvalue !== null && minvalue !== "" ? Number(minvalue) : undefined;
|
|
88
|
-
var normalizedMax = maxvalue !== undefined && maxvalue !== null && maxvalue !== "" ? Number(maxvalue) : undefined;
|
|
89
|
-
if (normalizedMin !== undefined && !Number.isNaN(normalizedMin)) {
|
|
90
|
-
combinedValidators.push({
|
|
91
|
-
type: "minvalue",
|
|
92
|
-
validator: normalizedMin,
|
|
93
|
-
errorMessage: validationmessage || "Value must be greater than or equal to ".concat(normalizedMin, ".")
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
if (normalizedMax !== undefined && !Number.isNaN(normalizedMax)) {
|
|
97
|
-
combinedValidators.push({
|
|
98
|
-
type: "maxvalue",
|
|
99
|
-
validator: normalizedMax,
|
|
100
|
-
errorMessage: validationmessage || "Value must be less than or equal to ".concat(normalizedMax, ".")
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
if (regexp) {
|
|
104
|
-
combinedValidators.push({
|
|
105
|
-
type: "regexp",
|
|
106
|
-
validator: regexp,
|
|
107
|
-
errorMessage: validationmessage || "Invalid format."
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
return (0, _validationContrustor.createValidationRules)(combinedValidators, form);
|
|
111
|
-
};
|
|
112
|
-
var useHTMLValidationProps = function useHTMLValidationProps(validationType, required, maxchars, regexp) {
|
|
113
|
-
return (0, _react.useMemo)(function () {
|
|
114
|
-
if (validationType !== "html") {
|
|
115
|
-
return {};
|
|
116
|
-
}
|
|
117
|
-
var htmlProps = {};
|
|
118
|
-
if (required) {
|
|
119
|
-
htmlProps.required = true;
|
|
120
|
-
}
|
|
121
|
-
if (maxchars) {
|
|
122
|
-
htmlProps.maxLength = maxchars;
|
|
123
|
-
}
|
|
124
|
-
if (regexp) {
|
|
125
|
-
htmlProps.pattern = typeof regexp === "string" ? regexp : regexp.source;
|
|
126
|
-
}
|
|
127
|
-
return htmlProps;
|
|
128
|
-
}, [validationType, required, maxchars, regexp]);
|
|
129
|
-
};
|
|
130
|
-
|
|
131
|
-
// Utility functions
|
|
132
|
-
var processFieldValue = function processFieldValue(fieldValue, type, datafield) {
|
|
133
|
-
// If fieldValue is an object and datafield is specified, extract the value
|
|
134
|
-
if (fieldValue && (0, _typeof2["default"])(fieldValue) === "object" && !Array.isArray(fieldValue) && datafield) {
|
|
135
|
-
fieldValue = datafield === "All Fields" ? fieldValue : fieldValue[datafield];
|
|
136
|
-
}
|
|
137
|
-
if (type === "number") {
|
|
138
|
-
return fieldValue === "" || fieldValue === null || fieldValue === undefined ? "" : fieldValue;
|
|
139
|
-
}
|
|
140
|
-
return fieldValue;
|
|
141
|
-
};
|
|
142
|
-
var getErrorState = function getErrorState(fieldState, validationType, touched) {
|
|
143
|
-
switch (validationType) {
|
|
144
|
-
case "default":
|
|
145
|
-
return {
|
|
146
|
-
error: touched && !!fieldState.error,
|
|
147
|
-
errorMessage: touched && fieldState.error ? fieldState.error.message : undefined,
|
|
148
|
-
fieldState: fieldState
|
|
149
|
-
};
|
|
150
|
-
case "html":
|
|
151
|
-
return {
|
|
152
|
-
error: touched && !!fieldState.error,
|
|
153
|
-
errorMessage: touched && fieldState.error ? fieldState.error.message : undefined,
|
|
154
|
-
fieldState: fieldState
|
|
155
|
-
};
|
|
156
|
-
case "none":
|
|
157
|
-
return {
|
|
158
|
-
error: false,
|
|
159
|
-
errorMessage: undefined,
|
|
160
|
-
fieldState: _objectSpread(_objectSpread({}, fieldState), {}, {
|
|
161
|
-
error: undefined
|
|
162
|
-
})
|
|
163
|
-
};
|
|
164
|
-
default:
|
|
165
|
-
return {
|
|
166
|
-
error: false,
|
|
167
|
-
errorMessage: undefined,
|
|
168
|
-
fieldState: undefined
|
|
169
|
-
};
|
|
170
|
-
}
|
|
171
|
-
};
|
|
172
|
-
var shouldShowErrorMessage = function shouldShowErrorMessage(validationType, fieldState, touched) {
|
|
173
|
-
return validationType !== "none" && (validationType === "default" && fieldState.error || validationType === "html" && fieldState.error);
|
|
174
|
-
};
|
|
175
|
-
|
|
176
25
|
// HOC function
|
|
177
26
|
var withFormController = function withFormController(WrappedComponent) {
|
|
178
27
|
var WithFormControllerComponent = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
@@ -230,17 +79,16 @@ var withFormController = function withFormController(WrappedComponent) {
|
|
|
230
79
|
var validationType = (form === null || form === void 0 ? void 0 : form.validationtype) || (formRef === null || formRef === void 0 ? void 0 : formRef.validationtype) || "default";
|
|
231
80
|
|
|
232
81
|
// Custom hooks
|
|
233
|
-
useFormRegistration(name, fieldProxy, contextFormRef);
|
|
82
|
+
(0, _hooks.useFormRegistration)(name, fieldProxy, contextFormRef);
|
|
234
83
|
// For max widgets: only sync maxdatavalue (don't sync datavalue as it shouldn't change)
|
|
235
84
|
// For regular widgets: sync datavalue
|
|
236
85
|
var syncValue = isMaxWidget ? maxDataValue !== undefined ? maxDataValue : undefined // Only sync maxDataValue for max widgets
|
|
237
86
|
: datavalue !== undefined ? datavalue : undefined; // Sync datavalue for regular widgets
|
|
238
|
-
|
|
239
|
-
useDefaultValueSync(defaultvalue, datavalue, fieldRef);
|
|
87
|
+
(0, _hooks.useDefaultValueSync)(defaultvalue, datavalue, fieldRef);
|
|
240
88
|
// ignoring min/max range validation for Radioset and Checkboxset widgets
|
|
241
89
|
var widget = WrappedComponent === null || WrappedComponent === void 0 ? void 0 : WrappedComponent.displayName;
|
|
242
90
|
var ignoreRange = ["WmRadioset", "WmCheckboxset"].includes(widget !== null && widget !== void 0 ? widget : "");
|
|
243
|
-
var validationRules = useValidationRules(validationType, validators, asyncValidators, required, maxchars, regexp, validationmessage, ignoreRange ? undefined : minvalue, ignoreRange ? undefined : maxvalue, form);
|
|
91
|
+
var validationRules = (0, _hooks.useValidationRules)(validationType, validators, asyncValidators, required, maxchars, regexp, validationmessage, ignoreRange ? undefined : minvalue, ignoreRange ? undefined : maxvalue, form);
|
|
244
92
|
var rules = {
|
|
245
93
|
required: required,
|
|
246
94
|
maxchars: maxchars,
|
|
@@ -255,7 +103,7 @@ var withFormController = function withFormController(WrappedComponent) {
|
|
|
255
103
|
maxdate: props.maxdate
|
|
256
104
|
};
|
|
257
105
|
var extractedValidatorProps = (0, _utils.extractDynamicValidationProps)(validators || [], rules);
|
|
258
|
-
var htmlValidationProps = useHTMLValidationProps(validationType, required, maxchars, regexp);
|
|
106
|
+
var htmlValidationProps = (0, _hooks.useHTMLValidationProps)(validationType, required, maxchars, regexp);
|
|
259
107
|
|
|
260
108
|
// Update observeRef when observe changes
|
|
261
109
|
(0, _react.useEffect)(function () {
|
|
@@ -348,8 +196,8 @@ var withFormController = function withFormController(WrappedComponent) {
|
|
|
348
196
|
fieldRef.current = field;
|
|
349
197
|
|
|
350
198
|
// Process field value and get error state
|
|
351
|
-
var processedValue = processFieldValue(field.value, type, props.datafield);
|
|
352
|
-
var errorState = getErrorState(fieldState, validationType, touched);
|
|
199
|
+
var processedValue = (0, _utils.processFieldValue)(field.value, type, props.datafield);
|
|
200
|
+
var errorState = (0, _utils.getErrorState)(fieldState, validationType, touched);
|
|
353
201
|
|
|
354
202
|
// Determine the value to use with proper fallback chain
|
|
355
203
|
// Priority: field.value (if not undefined) -> datavalue (if not undefined) -> defaultvalue
|
|
@@ -428,7 +276,7 @@ var withFormController = function withFormController(WrappedComponent) {
|
|
|
428
276
|
}
|
|
429
277
|
}
|
|
430
278
|
return value;
|
|
431
|
-
}()), hint && !shouldShowErrorMessage(validationType, fieldState, touched) && __jsx("p", {
|
|
279
|
+
}()), hint && !(0, _utils.shouldShowErrorMessage)(validationType, fieldState, touched) && __jsx("p", {
|
|
432
280
|
className: "help-block",
|
|
433
281
|
"aria-hidden": "true",
|
|
434
282
|
role: "alert",
|
|
@@ -437,7 +285,7 @@ var withFormController = function withFormController(WrappedComponent) {
|
|
|
437
285
|
textAlign: "start",
|
|
438
286
|
width: "100%"
|
|
439
287
|
}
|
|
440
|
-
}, hint), shouldShowErrorMessage(validationType, fieldState, touched) && __jsx("p", {
|
|
288
|
+
}, hint), (0, _utils.shouldShowErrorMessage)(validationType, fieldState, touched) && __jsx("p", {
|
|
441
289
|
className: "help-block text-danger",
|
|
442
290
|
"aria-hidden": "false",
|
|
443
291
|
role: "alert",
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _formBody = _interopRequireDefault(require("../form-body"));
|
|
11
|
+
var _container = _interopRequireDefault(require("@wavemaker/react-runtime/components/container"));
|
|
12
|
+
var _dynamicFields = _interopRequireDefault(require("../dynamic-fields"));
|
|
13
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
|
|
14
|
+
var __jsx = _react["default"].createElement;
|
|
15
|
+
var DYNAMIC_FORM_BODY_SUFFIX = "_dynamic_form_body";
|
|
16
|
+
var DYNAMIC_FORM_CONTAINER_SUFFIX = "_dynamic_form_container";
|
|
17
|
+
var DYNAMIC_FIELDS_SUFFIX = "_dynamic_fields";
|
|
18
|
+
function FormDynamicFieldsSectionComponent(_ref) {
|
|
19
|
+
var formName = _ref.formName,
|
|
20
|
+
metadata = _ref.metadata,
|
|
21
|
+
listener = _ref.listener;
|
|
22
|
+
var formBodyName = formName + DYNAMIC_FORM_BODY_SUFFIX;
|
|
23
|
+
var containerName = formName + DYNAMIC_FORM_CONTAINER_SUFFIX;
|
|
24
|
+
var dynamicFieldsName = formName + DYNAMIC_FIELDS_SUFFIX;
|
|
25
|
+
return __jsx(_formBody["default"], {
|
|
26
|
+
name: formBodyName,
|
|
27
|
+
listener: listener,
|
|
28
|
+
"data-widget-id": "widget-".concat(formName, "-dynamic-body")
|
|
29
|
+
}, __jsx(_container["default"], {
|
|
30
|
+
name: containerName,
|
|
31
|
+
listener: listener,
|
|
32
|
+
"data-widget-id": "widget-".concat(formName, "-dynamic-container"),
|
|
33
|
+
className: "dynamic-form-container"
|
|
34
|
+
}, __jsx(_dynamicFields["default"], {
|
|
35
|
+
name: dynamicFieldsName,
|
|
36
|
+
metadata: metadata,
|
|
37
|
+
listener: listener,
|
|
38
|
+
"data-widget-id": "widget-".concat(formName, "-dynamic-fields")
|
|
39
|
+
})));
|
|
40
|
+
}
|
|
41
|
+
function propsAreEqual(prev, next) {
|
|
42
|
+
return prev.formName === next.formName && prev.metadata === next.metadata;
|
|
43
|
+
}
|
|
44
|
+
var FormDynamicFieldsSection = /*#__PURE__*/(0, _react.memo)(FormDynamicFieldsSectionComponent, propsAreEqual);
|
|
45
|
+
FormDynamicFieldsSection.displayName = "FormDynamicFieldsSection";
|
|
46
|
+
var _default = exports["default"] = FormDynamicFieldsSection;
|
|
@@ -12,6 +12,7 @@ var _withBaseWrapper = _interopRequireDefault(require("@wavemaker/react-runtime/
|
|
|
12
12
|
var _message = require("@wavemaker/react-runtime/components/basic/message");
|
|
13
13
|
var _baseForm = _interopRequireDefault(require("./base-form"));
|
|
14
14
|
var _formHeader = _interopRequireDefault(require("./form-header"));
|
|
15
|
+
var _formDynamicSection = _interopRequireDefault(require("./form-dynamic-section"));
|
|
15
16
|
var _attr = require("@wavemaker/react-runtime/utils/attr");
|
|
16
17
|
var __jsx = _react["default"].createElement;
|
|
17
18
|
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; }
|
|
@@ -19,6 +20,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
19
20
|
var WmForm = function WmForm(props) {
|
|
20
21
|
var _props$headerActions, _props$statusMessage, _props$statusMessage2, _props$statusMessage3, _props$statusMessage4;
|
|
21
22
|
var shouldHideHeader = props.isLayoutDialog || props.isInsideWizard;
|
|
23
|
+
var shouldInjectDynamicFields = Array.isArray(props.metadata) && props.metadata.length > 0;
|
|
22
24
|
return __jsx("form", (0, _extends2["default"])({}, (0, _attr.removeInvalidAttributes)(props), {
|
|
23
25
|
hidden: props.hidden || false,
|
|
24
26
|
name: props.name,
|
|
@@ -51,6 +53,9 @@ var WmForm = function WmForm(props) {
|
|
|
51
53
|
close: props === null || props === void 0 ? void 0 : props.clearMessage,
|
|
52
54
|
name: "",
|
|
53
55
|
listener: {}
|
|
56
|
+
}), shouldInjectDynamicFields && __jsx(_formDynamicSection["default"], {
|
|
57
|
+
formName: props.name,
|
|
58
|
+
metadata: props.metadata
|
|
54
59
|
}), props.children);
|
|
55
60
|
};
|
|
56
61
|
WmForm.displayName = "WmForm";
|
|
@@ -10,6 +10,7 @@ var _react = require("react");
|
|
|
10
10
|
var _constants = require("../utils/constants");
|
|
11
11
|
var _listHelpers = require("../utils/list-helpers");
|
|
12
12
|
var _WidgetProvider = require("@wavemaker/react-runtime/context/WidgetProvider");
|
|
13
|
+
var _widgetInstanceUtils = require("../utils/widget-instance-utils");
|
|
13
14
|
var useListEffects = exports.useListEffects = function useListEffects(props) {
|
|
14
15
|
var name = props.name,
|
|
15
16
|
navigation = props.navigation,
|
|
@@ -185,7 +186,13 @@ var useListEffects = exports.useListEffects = function useListEffects(props) {
|
|
|
185
186
|
// Delay onSelect to ensure it fires after onRender
|
|
186
187
|
// onRender is called synchronously in the ListItems component
|
|
187
188
|
var timer = setTimeout(function () {
|
|
188
|
-
|
|
189
|
+
var selectedItem = listState.selectedItems[0];
|
|
190
|
+
|
|
191
|
+
// Attach context information to widget instance
|
|
192
|
+
if (selectedItem) {
|
|
193
|
+
(0, _widgetInstanceUtils.setWidgetIndexWithContext)(widgetInstance, items, selectedItem);
|
|
194
|
+
}
|
|
195
|
+
onSelect(widgetInstance, selectedItem);
|
|
189
196
|
}, 0);
|
|
190
197
|
return function () {
|
|
191
198
|
return clearTimeout(timer);
|
|
@@ -193,8 +200,7 @@ var useListEffects = exports.useListEffects = function useListEffects(props) {
|
|
|
193
200
|
}
|
|
194
201
|
}
|
|
195
202
|
}
|
|
196
|
-
}, [selectfirstitem, listState.selectedItems]);
|
|
197
|
-
|
|
203
|
+
}, [selectfirstitem, listState.selectedItems, items]);
|
|
198
204
|
// Effect 6: Handle selectfirstitem for grouped data
|
|
199
205
|
(0, _react.useEffect)(function () {
|
|
200
206
|
if (selectfirstitem && groupby && groupedData && groupedData.length > 0) {
|
|
@@ -210,6 +216,7 @@ var useListEffects = exports.useListEffects = function useListEffects(props) {
|
|
|
210
216
|
// Delay onSelect to ensure it fires after onRender
|
|
211
217
|
// onRender is called synchronously in the ListItems component
|
|
212
218
|
var timer = setTimeout(function () {
|
|
219
|
+
(0, _widgetInstanceUtils.setWidgetIndexWithContext)(widgetInstance, items, firstItemInGroup);
|
|
213
220
|
onSelect(widgetInstance, firstItemInGroup);
|
|
214
221
|
}, 0);
|
|
215
222
|
return function () {
|
|
@@ -11,6 +11,7 @@ var _react = require("react");
|
|
|
11
11
|
var _lodashEs = require("lodash-es");
|
|
12
12
|
var _listHelpers = require("../utils/list-helpers");
|
|
13
13
|
var _WidgetProvider = require("@wavemaker/react-runtime/context/WidgetProvider");
|
|
14
|
+
var _widgetInstanceUtils = require("../utils/widget-instance-utils");
|
|
14
15
|
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; }
|
|
15
16
|
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; }
|
|
16
17
|
/**
|
|
@@ -63,18 +64,15 @@ var useListEventHandlers = exports.useListEventHandlers = function useListEventH
|
|
|
63
64
|
|
|
64
65
|
// Helper function to call onSelect and mark as user-initiated
|
|
65
66
|
var callOnSelect = (0, _react.useCallback)(function (selectedItem) {
|
|
66
|
-
if (onSelect && widgetInstance) {
|
|
67
|
+
if (onSelect && widgetInstance && selectedItem) {
|
|
67
68
|
if (userInitiatedSelectionRef) {
|
|
68
69
|
userInitiatedSelectionRef.current = true;
|
|
69
70
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
selecteditem: multiselect ? selectedItemsRef.current : selectedItem
|
|
73
|
-
});
|
|
74
|
-
}
|
|
71
|
+
// Set $index on widget instance
|
|
72
|
+
(0, _widgetInstanceUtils.setWidgetIndex)(widgetInstance, items, selectedItem);
|
|
75
73
|
onSelect(widgetInstance, selectedItem);
|
|
76
74
|
}
|
|
77
|
-
}, [onSelect,
|
|
75
|
+
}, [onSelect, userInitiatedSelectionRef, items]);
|
|
78
76
|
var handleListItemClick = (0, _react.useCallback)(function (event, item) {
|
|
79
77
|
if (disableitem) return;
|
|
80
78
|
var selectCount = selectedItems.length;
|
|
@@ -94,6 +92,7 @@ var useListEventHandlers = exports.useListEventHandlers = function useListEventH
|
|
|
94
92
|
var end = (0, _lodashEs.max)([firstIndex, lastIndex]);
|
|
95
93
|
var rangeCount = end - start + 1;
|
|
96
94
|
if (selectionlimit > 0 && rangeCount > selectionlimit) {
|
|
95
|
+
(0, _widgetInstanceUtils.setWidgetIndex)(widgetInstance, items, item);
|
|
97
96
|
onSelectionlimitexceed === null || onSelectionlimitexceed === void 0 || onSelectionlimitexceed(event, widgetInstance);
|
|
98
97
|
return;
|
|
99
98
|
}
|
|
@@ -105,6 +104,7 @@ var useListEventHandlers = exports.useListEventHandlers = function useListEventH
|
|
|
105
104
|
if (!isItemActive) {
|
|
106
105
|
callOnSelect(item); // Pass the current item that triggered the range selection
|
|
107
106
|
}
|
|
107
|
+
(0, _widgetInstanceUtils.setWidgetIndex)(widgetInstance, items, item);
|
|
108
108
|
onClick === null || onClick === void 0 || onClick(event, widgetInstance); // Use widgetInstance instead of item
|
|
109
109
|
return;
|
|
110
110
|
}
|
|
@@ -113,6 +113,7 @@ var useListEventHandlers = exports.useListEventHandlers = function useListEventH
|
|
|
113
113
|
// Handle Ctrl+Click for individual item selection toggle
|
|
114
114
|
if (event.ctrlKey) {
|
|
115
115
|
if (selectionlimit > 0 && selectCount >= selectionlimit && !isItemSelected) {
|
|
116
|
+
(0, _widgetInstanceUtils.setWidgetIndex)(widgetInstance, items, item);
|
|
116
117
|
onSelectionlimitexceed === null || onSelectionlimitexceed === void 0 || onSelectionlimitexceed(event, widgetInstance);
|
|
117
118
|
return;
|
|
118
119
|
}
|
|
@@ -171,21 +172,21 @@ var useListEventHandlers = exports.useListEventHandlers = function useListEventH
|
|
|
171
172
|
// If item is already selected, do nothing (don't deselect)
|
|
172
173
|
}
|
|
173
174
|
(0, _listHelpers.getSelectedItemWidgets)(event, listener, name || "", item || null, Widgets);
|
|
174
|
-
|
|
175
|
-
delete widgetInstance._wmListItemId;
|
|
176
|
-
widgetInstance.item = item;
|
|
177
|
-
}
|
|
175
|
+
(0, _widgetInstanceUtils.setWidgetItem)(widgetInstance, items, item);
|
|
178
176
|
onClick === null || onClick === void 0 || onClick(event, widgetInstance); // Use widgetInstance instead of item
|
|
179
177
|
}, [disableitem, selectedItems, multiselect, firstSelectedItem, items, selectionlimit, activeItems, setSelectedItems, setActiveItems, setFirstSelectedItem, onSelectionlimitexceed, onClick, callOnSelect]);
|
|
180
178
|
var handleListItemDoubleClick = (0, _react.useCallback)(function (event, item) {
|
|
179
|
+
(0, _widgetInstanceUtils.setWidgetIndex)(widgetInstance, items, item);
|
|
181
180
|
onDblclick === null || onDblclick === void 0 || onDblclick(event, widgetInstance); // Use widgetInstance instead of item
|
|
182
|
-
}, [onDblclick]);
|
|
181
|
+
}, [onDblclick, items]);
|
|
183
182
|
var handleListItemMouseEnter = (0, _react.useCallback)(function (event, item) {
|
|
183
|
+
(0, _widgetInstanceUtils.setWidgetIndex)(widgetInstance, items, item);
|
|
184
184
|
onMouseEnter === null || onMouseEnter === void 0 || onMouseEnter(event, widgetInstance); // Use widgetInstance instead of item
|
|
185
|
-
}, [onMouseEnter]);
|
|
185
|
+
}, [onMouseEnter, items]);
|
|
186
186
|
var handleListItemMouseLeave = (0, _react.useCallback)(function (event, item) {
|
|
187
|
+
(0, _widgetInstanceUtils.setWidgetIndex)(widgetInstance, items, item);
|
|
187
188
|
onMouseLeave === null || onMouseLeave === void 0 || onMouseLeave(event, widgetInstance); // Use widgetInstance instead of item
|
|
188
|
-
}, [onMouseLeave]);
|
|
189
|
+
}, [onMouseLeave, items]);
|
|
189
190
|
var handleHeaderClick = (0, _react.useCallback)(function (groupKey) {
|
|
190
191
|
if (collapsible) {
|
|
191
192
|
setGroupCollapsed(_objectSpread(_objectSpread({}, groupCollapsed), {}, (0, _defineProperty2["default"])({}, groupKey, !groupCollapsed[groupKey])));
|
|
@@ -197,6 +198,7 @@ var useListEventHandlers = exports.useListEventHandlers = function useListEventH
|
|
|
197
198
|
setCurrentPage(index);
|
|
198
199
|
|
|
199
200
|
// Trigger the callbacks - datasource handling is now done in usePagination hook
|
|
201
|
+
(0, _widgetInstanceUtils.setWidgetPageIndex)(widgetInstance, index);
|
|
200
202
|
onPaginationchange === null || onPaginationchange === void 0 || onPaginationchange(event, widgetInstance, index);
|
|
201
203
|
onPageChange === null || onPageChange === void 0 || onPageChange(event, index);
|
|
202
204
|
}
|
|
@@ -204,9 +206,10 @@ var useListEventHandlers = exports.useListEventHandlers = function useListEventH
|
|
|
204
206
|
var handleSetRecord = (0, _react.useCallback)(function (event, widget, index, data) {
|
|
205
207
|
if (index) {
|
|
206
208
|
setCurrentPage(index);
|
|
209
|
+
(0, _widgetInstanceUtils.setWidgetIndex)(widgetInstance, items, data);
|
|
207
210
|
onSetrecord === null || onSetrecord === void 0 || onSetrecord(event, widgetInstance, index, data);
|
|
208
211
|
}
|
|
209
|
-
}, [setCurrentPage, onSetrecord]);
|
|
212
|
+
}, [setCurrentPage, onSetrecord, items]);
|
|
210
213
|
var handlePageChange = (0, _react.useCallback)(function (page) {
|
|
211
214
|
// Update the current page
|
|
212
215
|
setCurrentPage(page);
|
|
@@ -222,6 +225,7 @@ var useListEventHandlers = exports.useListEventHandlers = function useListEventH
|
|
|
222
225
|
});
|
|
223
226
|
Promise.resolve(invokeResult).then(function () {
|
|
224
227
|
// Trigger the callbacks after successful data fetch
|
|
228
|
+
(0, _widgetInstanceUtils.setWidgetPageIndex)(widgetInstance, page);
|
|
225
229
|
onPaginationchange === null || onPaginationchange === void 0 || onPaginationchange(null, widgetInstance, page);
|
|
226
230
|
onPageChange === null || onPageChange === void 0 || onPageChange(null, page);
|
|
227
231
|
setIsLoadingMore(false);
|
|
@@ -233,6 +237,7 @@ var useListEventHandlers = exports.useListEventHandlers = function useListEventH
|
|
|
233
237
|
});
|
|
234
238
|
} else {
|
|
235
239
|
// For client-side pagination, just trigger callbacks
|
|
240
|
+
(0, _widgetInstanceUtils.setWidgetPageIndex)(widgetInstance, page);
|
|
236
241
|
onPaginationchange === null || onPaginationchange === void 0 || onPaginationchange(null, widgetInstance, page);
|
|
237
242
|
onPageChange === null || onPageChange === void 0 || onPageChange(null, page);
|
|
238
243
|
}
|
|
@@ -33,7 +33,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
33
33
|
// Import components
|
|
34
34
|
// Import utilities
|
|
35
35
|
var WmList = function WmList(props) {
|
|
36
|
-
var _listener$Widgets, _paginationState$pagi5, _paginationState$pagi6;
|
|
36
|
+
var _listener$Widgets, _paginationState$pagi5, _paginationState$pagi6, _datasource$loading;
|
|
37
37
|
// ==================== PROPS DESTRUCTURING ====================
|
|
38
38
|
var className = props.className,
|
|
39
39
|
styles = props.styles,
|
|
@@ -161,10 +161,11 @@ var WmList = function WmList(props) {
|
|
|
161
161
|
var _useState = (0, _react.useState)(false),
|
|
162
162
|
isDatasetFromModalVariable = _useState[0],
|
|
163
163
|
setIsDatasetFromModalVariable = _useState[1];
|
|
164
|
+
var resolvedDataset = (0, _listHelpers.getSafeDataset)(dataset);
|
|
164
165
|
|
|
165
166
|
// Calculate hash of dataset content to detect mutations
|
|
166
167
|
// This runs every render but is lightweight compared to recalculating safeDataset
|
|
167
|
-
var datasetHash = Array.isArray(
|
|
168
|
+
var datasetHash = Array.isArray(resolvedDataset) && (resolvedDataset !== null && resolvedDataset !== void 0 ? resolvedDataset : []).map(function (item, idx) {
|
|
168
169
|
if (!item || (0, _typeof2["default"])(item) !== "object") {
|
|
169
170
|
return "".concat(idx, ":").concat(item);
|
|
170
171
|
}
|
|
@@ -172,8 +173,7 @@ var WmList = function WmList(props) {
|
|
|
172
173
|
return "".concat(idx, ":").concat(Object.values(item).join("-"));
|
|
173
174
|
}).join("|");
|
|
174
175
|
var safeDataset = (0, _react.useMemo)(function () {
|
|
175
|
-
|
|
176
|
-
return (0, _utils.addUniqueRowIds)(data, {
|
|
176
|
+
return (0, _utils.addUniqueRowIds)(resolvedDataset, {
|
|
177
177
|
type: "list"
|
|
178
178
|
});
|
|
179
179
|
}, [datasetHash]);
|
|
@@ -520,11 +520,10 @@ var WmList = function WmList(props) {
|
|
|
520
520
|
title: title,
|
|
521
521
|
subheading: subheading,
|
|
522
522
|
iconclass: iconclass
|
|
523
|
-
}),
|
|
524
|
-
show:
|
|
523
|
+
}), __jsx(_common.AppSpinner, {
|
|
524
|
+
show: (_datasource$loading = datasource === null || datasource === void 0 ? void 0 : datasource.loading) !== null && _datasource$loading !== void 0 ? _datasource$loading : false,
|
|
525
525
|
spinnermessages: [loadingdatamsg]
|
|
526
|
-
})
|
|
527
|
-
__jsx(_components.InlineNavigation, {
|
|
526
|
+
}), __jsx(_components.InlineNavigation, {
|
|
528
527
|
navigation: navigation,
|
|
529
528
|
currentPage: paginationState.currentPage,
|
|
530
529
|
totalPages: paginationState.effectiveTotalPages,
|
|
@@ -55,13 +55,33 @@ var getTextAlignClass = exports.getTextAlignClass = function getTextAlignClass(a
|
|
|
55
55
|
return "text-left";
|
|
56
56
|
}
|
|
57
57
|
};
|
|
58
|
+
var flattenIfArrayOfArrays = function flattenIfArrayOfArrays(arr) {
|
|
59
|
+
if (arr.length === 0) return arr;
|
|
60
|
+
var first = arr[0];
|
|
61
|
+
if (Array.isArray(first) && arr.every(function (x) {
|
|
62
|
+
return Array.isArray(x);
|
|
63
|
+
})) {
|
|
64
|
+
return arr.flat();
|
|
65
|
+
}
|
|
66
|
+
return Array.isArray(arr) ? arr : [];
|
|
67
|
+
};
|
|
58
68
|
|
|
59
69
|
/**
|
|
60
70
|
* Get safe dataset ensuring it's always an array
|
|
61
71
|
* @param dataset - Input dataset of any type
|
|
62
72
|
* @returns Array dataset with proper typing
|
|
63
73
|
*/
|
|
64
|
-
var
|
|
74
|
+
var _getSafeDataset = exports.getSafeDataset = function getSafeDataset(dataset) {
|
|
75
|
+
if (typeof dataset === "function") {
|
|
76
|
+
try {
|
|
77
|
+
return _getSafeDataset(dataset());
|
|
78
|
+
} catch (_unused) {
|
|
79
|
+
return [];
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (Array.isArray(dataset)) {
|
|
83
|
+
return flattenIfArrayOfArrays(dataset);
|
|
84
|
+
}
|
|
65
85
|
if (typeof dataset === "string") {
|
|
66
86
|
try {
|
|
67
87
|
var parsedData = dataset.split(",").map(function (str) {
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.useListWidgetMethods = void 0;
|
|
8
8
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
9
|
var _lodashEs = require("lodash-es");
|
|
10
|
+
var _widgetInstanceUtils = require("./widget-instance-utils");
|
|
10
11
|
var useListWidgetMethods = exports.useListWidgetMethods = function useListWidgetMethods(items, listState, multiselect, onSelect, widgetInstance, listener, userInitiatedSelectionRef, name, Widgets, size, setIsListCleared, handlePageSizeChange) {
|
|
11
12
|
// Return methods object directly without useMemo to avoid infinite re-renders
|
|
12
13
|
// Methods always have access to current values through closure
|
|
@@ -56,6 +57,7 @@ var useListWidgetMethods = exports.useListWidgetMethods = function useListWidget
|
|
|
56
57
|
listState.setFirstSelectedItem(item);
|
|
57
58
|
}
|
|
58
59
|
if (onSelect && widgetInstance && !statePersistenceTriggered) {
|
|
60
|
+
(0, _widgetInstanceUtils.setWidgetIndex)(widgetInstance, items, item);
|
|
59
61
|
onSelect(widgetInstance, item);
|
|
60
62
|
}
|
|
61
63
|
}
|