@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
|
@@ -16,7 +16,7 @@ var _Box = _interopRequireDefault(require("@mui/material/Box"));
|
|
|
16
16
|
var _Button = _interopRequireDefault(require("@mui/material/Button"));
|
|
17
17
|
var _Badge = _interopRequireDefault(require("@mui/material/Badge"));
|
|
18
18
|
var _withBaseWrapper = require("@wavemaker/react-runtime/higherOrder/withBaseWrapper");
|
|
19
|
-
var _excluded = ["iconurl", "iconclass", "iconwidth", "iconheight", "iconmargin", "iconposition", "caption", "badgevalue", "children", "styles", "conditionalstyles", "className", "onClick", "onDoubleClick", "onMouseEnter", "onMouseLeave", "onFocus", "onBlur", "onKeydown", "onKeyup", "listener", "name", "disabled", "type", "shortcutkey", "arialabel", "show"];
|
|
19
|
+
var _excluded = ["iconurl", "iconclass", "iconwidth", "iconheight", "iconmargin", "iconposition", "caption", "badgevalue", "children", "styles", "conditionalstyles", "className", "onClick", "onDoubleClick", "onMouseEnter", "onMouseLeave", "onFocus", "onBlur", "onKeydown", "onKeypress", "onKeyup", "listener", "name", "disabled", "type", "shortcutkey", "arialabel", "show"];
|
|
20
20
|
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); }
|
|
21
21
|
var __jsx = _react["default"].createElement;
|
|
22
22
|
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; }
|
|
@@ -44,6 +44,7 @@ var WmButton = exports.WmButton = /*#__PURE__*/(0, _react.memo)(function (props)
|
|
|
44
44
|
onFocus = props.onFocus,
|
|
45
45
|
onBlur = props.onBlur,
|
|
46
46
|
onKeydown = props.onKeydown,
|
|
47
|
+
onKeypress = props.onKeypress,
|
|
47
48
|
onKeyup = props.onKeyup,
|
|
48
49
|
listener = props.listener,
|
|
49
50
|
name = props.name,
|
|
@@ -56,6 +57,7 @@ var WmButton = exports.WmButton = /*#__PURE__*/(0, _react.memo)(function (props)
|
|
|
56
57
|
_props$show = props.show,
|
|
57
58
|
show = _props$show === void 0 ? "true" : _props$show,
|
|
58
59
|
restProps = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
|
60
|
+
var safeCaption = (caption === null || caption === void 0 ? void 0 : caption.toString().replace(/undefined|null/g, "")) || "";
|
|
59
61
|
var btnRef = (0, _react.useRef)(null);
|
|
60
62
|
(0, _react.useEffect)(function () {
|
|
61
63
|
if (!shortcutkey) return;
|
|
@@ -73,7 +75,9 @@ var WmButton = exports.WmButton = /*#__PURE__*/(0, _react.memo)(function (props)
|
|
|
73
75
|
}, [shortcutkey]);
|
|
74
76
|
function handleClick(event) {
|
|
75
77
|
event.preventDefault();
|
|
76
|
-
|
|
78
|
+
if (!props.stopPropagation) {
|
|
79
|
+
event.stopPropagation();
|
|
80
|
+
}
|
|
77
81
|
onClick === null || onClick === void 0 || onClick(event, props);
|
|
78
82
|
}
|
|
79
83
|
function handleOnBlur(event) {
|
|
@@ -109,7 +113,25 @@ var WmButton = exports.WmButton = /*#__PURE__*/(0, _react.memo)(function (props)
|
|
|
109
113
|
event.stopPropagation();
|
|
110
114
|
onKeyup === null || onKeyup === void 0 || onKeyup(event, props);
|
|
111
115
|
}
|
|
112
|
-
|
|
116
|
+
function handleKeyPress(event) {
|
|
117
|
+
event.preventDefault();
|
|
118
|
+
event.stopPropagation();
|
|
119
|
+
onKeypress === null || onKeypress === void 0 || onKeypress(event, props);
|
|
120
|
+
}
|
|
121
|
+
var handleMouseDown = function handleMouseDown(event) {
|
|
122
|
+
var formName = props.formName;
|
|
123
|
+
if (type == "reset" && formName) {
|
|
124
|
+
var _document;
|
|
125
|
+
event.preventDefault();
|
|
126
|
+
(_document = document) === null || _document === void 0 || (_document = _document.activeElement) === null || _document === void 0 || _document.blur();
|
|
127
|
+
setTimeout(function () {
|
|
128
|
+
var _listener$Widgets, _listener$Widgets$for;
|
|
129
|
+
(_listener$Widgets = listener.Widgets) === null || _listener$Widgets === void 0 || (_listener$Widgets = _listener$Widgets[formName]) === null || _listener$Widgets === void 0 || (_listener$Widgets$for = _listener$Widgets.formreset) === null || _listener$Widgets$for === void 0 || _listener$Widgets$for.call(_listener$Widgets);
|
|
130
|
+
onClick === null || onClick === void 0 || onClick(event, props);
|
|
131
|
+
}, 0);
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
var EVENTS = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, onBlur && {
|
|
113
135
|
onBlur: handleOnBlur
|
|
114
136
|
}), onFocus && {
|
|
115
137
|
onFocus: handleOnFocus
|
|
@@ -125,6 +147,10 @@ var WmButton = exports.WmButton = /*#__PURE__*/(0, _react.memo)(function (props)
|
|
|
125
147
|
onKeyUp: handleKeyUp
|
|
126
148
|
}), onClick && {
|
|
127
149
|
onClick: handleClick
|
|
150
|
+
}), onKeypress && {
|
|
151
|
+
onKeyPress: handleKeyPress
|
|
152
|
+
}), {
|
|
153
|
+
onMouseDown: handleMouseDown
|
|
128
154
|
});
|
|
129
155
|
return __jsx(_Button["default"], (0, _extends2["default"])({
|
|
130
156
|
sx: {
|
|
@@ -145,7 +171,7 @@ var WmButton = exports.WmButton = /*#__PURE__*/(0, _react.memo)(function (props)
|
|
|
145
171
|
ref: btnRef,
|
|
146
172
|
caption: caption,
|
|
147
173
|
disabled: disabled,
|
|
148
|
-
"aria-label":
|
|
174
|
+
"aria-label": safeCaption,
|
|
149
175
|
title: props.hint,
|
|
150
176
|
show: show === null || show === void 0 ? void 0 : show.toString()
|
|
151
177
|
}, restProps, EVENTS), iconurl && __jsx(_image["default"], {
|
|
@@ -172,11 +198,11 @@ var WmButton = exports.WmButton = /*#__PURE__*/(0, _react.memo)(function (props)
|
|
|
172
198
|
}), __jsx(_Box["default"], {
|
|
173
199
|
component: "span",
|
|
174
200
|
className: "sr-only"
|
|
175
|
-
},
|
|
201
|
+
}, safeCaption, " ", listener === null || listener === void 0 || (_listener$appLocale = listener.appLocale) === null || _listener$appLocale === void 0 ? void 0 : _listener$appLocale.LABEL_ICON)), __jsx(_Box["default"], {
|
|
176
202
|
component: "span",
|
|
177
203
|
className: "btn-caption",
|
|
178
204
|
dangerouslySetInnerHTML: {
|
|
179
|
-
__html:
|
|
205
|
+
__html: safeCaption || ""
|
|
180
206
|
},
|
|
181
207
|
sx: {
|
|
182
208
|
color: "inherit",
|
|
@@ -207,7 +233,7 @@ var WmButton = exports.WmButton = /*#__PURE__*/(0, _react.memo)(function (props)
|
|
|
207
233
|
}
|
|
208
234
|
}));
|
|
209
235
|
}, function (prev, current) {
|
|
210
|
-
var keys = ["iconurl", "iconclass", "icon", "width", "iconheight", "iconmargin", "caption", "badgevalue", "disabled"];
|
|
236
|
+
var keys = ["iconurl", "iconclass", "icon", "width", "iconheight", "iconmargin", "caption", "badgevalue", "disabled", "hidden", "onClick"];
|
|
211
237
|
return keys.every(function (key) {
|
|
212
238
|
return prev[key] === current[key];
|
|
213
239
|
});
|
|
@@ -28,6 +28,7 @@ var __jsx = _react["default"].createElement;
|
|
|
28
28
|
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; }
|
|
29
29
|
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; }
|
|
30
30
|
var WmCalendar = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
31
|
+
var _props$hidden;
|
|
31
32
|
var name = props.name,
|
|
32
33
|
dataset = props.dataset,
|
|
33
34
|
datavalue = props.datavalue,
|
|
@@ -122,24 +123,34 @@ var WmCalendar = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
|
122
123
|
}
|
|
123
124
|
}, [calendartype, controls]);
|
|
124
125
|
var invokeCallback = (0, _react.useCallback)(function (eventName, eventData) {
|
|
126
|
+
var $start = eventData.$start,
|
|
127
|
+
$end = eventData.$end,
|
|
128
|
+
$view = eventData.$view,
|
|
129
|
+
$data = eventData.$data,
|
|
130
|
+
$event = eventData.$event,
|
|
131
|
+
$newData = eventData.$newData,
|
|
132
|
+
$oldData = eventData.$oldData,
|
|
133
|
+
$delta = eventData.$delta,
|
|
134
|
+
$revertFunc = eventData.$revertFunc,
|
|
135
|
+
$ui = eventData.$ui;
|
|
125
136
|
switch (eventName) {
|
|
126
137
|
case "select":
|
|
127
|
-
onSelect === null || onSelect === void 0 || onSelect(
|
|
138
|
+
onSelect === null || onSelect === void 0 || onSelect($start, $end, $view, $data);
|
|
128
139
|
break;
|
|
129
140
|
case "beforerender":
|
|
130
141
|
onBeforerender === null || onBeforerender === void 0 || onBeforerender(eventData, listener === null || listener === void 0 ? void 0 : listener.Widgets[name]);
|
|
131
142
|
break;
|
|
132
143
|
case "eventdrop":
|
|
133
|
-
onEventdrop === null || onEventdrop === void 0 || onEventdrop(
|
|
144
|
+
onEventdrop === null || onEventdrop === void 0 || onEventdrop($event, $newData, $oldData, $delta, $revertFunc, $ui, $view);
|
|
134
145
|
break;
|
|
135
146
|
case "eventresize":
|
|
136
|
-
onEventresize === null || onEventresize === void 0 || onEventresize(
|
|
147
|
+
onEventresize === null || onEventresize === void 0 || onEventresize($event, $newData, $oldData, $delta, $revertFunc, $ui, $view);
|
|
137
148
|
break;
|
|
138
149
|
case "eventclick":
|
|
139
|
-
onEventclick === null || onEventclick === void 0 || onEventclick(
|
|
150
|
+
onEventclick === null || onEventclick === void 0 || onEventclick($event, $data, $view);
|
|
140
151
|
break;
|
|
141
152
|
case "eventrender":
|
|
142
|
-
onEventrender === null || onEventrender === void 0 || onEventrender(
|
|
153
|
+
onEventrender === null || onEventrender === void 0 || onEventrender($event, $data, $view);
|
|
143
154
|
break;
|
|
144
155
|
case "viewrender":
|
|
145
156
|
onViewrender === null || onViewrender === void 0 || onViewrender(eventData.$view);
|
|
@@ -164,7 +175,7 @@ var WmCalendar = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
|
164
175
|
selectable: selectionmode !== _utils.SELECTION_MODES.NONE,
|
|
165
176
|
longPressDelay: 1000,
|
|
166
177
|
headerToolbar: _utils.defaultHeaderOptions,
|
|
167
|
-
nextDayThreshold: _utils.NEXT_DAY_THRESHOLD.
|
|
178
|
+
nextDayThreshold: _utils.NEXT_DAY_THRESHOLD.START,
|
|
168
179
|
eventSources: [dataSetEvents],
|
|
169
180
|
views: {
|
|
170
181
|
month: {
|
|
@@ -536,6 +547,7 @@ var WmCalendar = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
|
536
547
|
"aria-label": view ? view + " view" : "month view"
|
|
537
548
|
};
|
|
538
549
|
return __jsx(_material.Box, (0, _extends2["default"])({
|
|
550
|
+
hidden: (_props$hidden = props.hidden) !== null && _props$hidden !== void 0 ? _props$hidden : false,
|
|
539
551
|
className: "app-calendar"
|
|
540
552
|
}, componentProps), __jsx(_material.Box, {
|
|
541
553
|
className: props.className,
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports["default"] = void 0;
|
|
9
9
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
11
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
12
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
12
13
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
@@ -21,12 +22,15 @@ var _search = _interopRequireDefault(require("@wavemaker/react-runtime/component
|
|
|
21
22
|
var _withBaseWrapper = require("@wavemaker/react-runtime/higherOrder/withBaseWrapper");
|
|
22
23
|
var _SortableChip = _interopRequireDefault(require("./SortableChip"));
|
|
23
24
|
var _utils = require("./utils");
|
|
25
|
+
var _withFormController = _interopRequireDefault(require("@wavemaker/react-runtime/components/data/form/form-controller/withFormController"));
|
|
26
|
+
var _constants = require("@wavemaker/react-runtime/components/constants");
|
|
24
27
|
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); }
|
|
25
28
|
var __jsx = _react["default"].createElement;
|
|
26
29
|
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; }
|
|
27
30
|
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; }
|
|
28
31
|
var DEFAULT_CLASS = "app-chips nav nav-pills list-inline";
|
|
29
|
-
var WmChips = /*#__PURE__*/_react["default"].
|
|
32
|
+
var WmChips = /*#__PURE__*/_react["default"].memo(function (props) {
|
|
33
|
+
var _props$hidden;
|
|
30
34
|
var _props$allowonlyselec = props.allowonlyselect,
|
|
31
35
|
allowonlyselect = _props$allowonlyselec === void 0 ? false : _props$allowonlyselec,
|
|
32
36
|
_props$autofocus = props.autofocus,
|
|
@@ -38,7 +42,7 @@ var WmChips = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
|
|
|
38
42
|
_props$datafield = props.datafield,
|
|
39
43
|
datafield = _props$datafield === void 0 ? "All Fields" : _props$datafield,
|
|
40
44
|
_props$dataset = props.dataset,
|
|
41
|
-
dataset = _props$dataset === void 0 ?
|
|
45
|
+
dataset = _props$dataset === void 0 ? _constants.DEFAULT_CHIPS_DATASET : _props$dataset,
|
|
42
46
|
datavalue = props.datavalue,
|
|
43
47
|
dateformat = props.dateformat,
|
|
44
48
|
_props$disabled = props.disabled,
|
|
@@ -116,6 +120,7 @@ var WmChips = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
|
|
|
116
120
|
var _useState7 = (0, _react.useState)(false),
|
|
117
121
|
isInitialized = _useState7[0],
|
|
118
122
|
setIsInitialized = _useState7[1];
|
|
123
|
+
var backspaceArmedRef = (0, _react.useRef)(false);
|
|
119
124
|
|
|
120
125
|
// Computed values
|
|
121
126
|
var maxSizeReached = "Max size reached";
|
|
@@ -135,7 +140,7 @@ var WmChips = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
|
|
|
135
140
|
return key;
|
|
136
141
|
}, [uniqueKeyCounter]);
|
|
137
142
|
var processDatasetCb = (0, _react.useCallback)(function (data) {
|
|
138
|
-
return (0, _utils.processDataset)(data, displayfield, displayexpression, displayimagesrc, datafield, generateStableKeyCb);
|
|
143
|
+
return (0, _utils.processDataset)(data, displayfield || "label", displayexpression, displayimagesrc, datafield, generateStableKeyCb);
|
|
139
144
|
}, [displayfield, displayexpression, displayimagesrc, datafield, generateStableKeyCb]);
|
|
140
145
|
(0, _react.useEffect)(function () {
|
|
141
146
|
var items = processDatasetCb(dataset);
|
|
@@ -151,7 +156,7 @@ var WmChips = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
|
|
|
151
156
|
}, [displayfield, generateUniqueKey]);
|
|
152
157
|
var updateMaxSize = (0, _react.useCallback)(function (currentLength) {
|
|
153
158
|
var length = currentLength !== undefined ? currentLength : chipsList.length;
|
|
154
|
-
setSaturate(maxsize > 0 && length === maxsize);
|
|
159
|
+
setSaturate((maxsize || 0) > 0 && length === maxsize);
|
|
155
160
|
}, [maxsize, chipsList.length]);
|
|
156
161
|
var updateQueryModel = (0, _react.useCallback)(/*#__PURE__*/function () {
|
|
157
162
|
var _ref = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(data) {
|
|
@@ -208,8 +213,8 @@ var WmChips = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
|
|
|
208
213
|
var chipObj = {
|
|
209
214
|
key: generateStableKeyCb(finalDataObj, i),
|
|
210
215
|
value: finalDataObj,
|
|
211
|
-
label: isCustom ? val : finalDataObj[displayfield || "label" || Object.keys(finalDataObj)[0]] || "",
|
|
212
|
-
displayValue: isCustom ? val : finalDataObj[displayfield || Object.keys(finalDataObj)[0]] || "",
|
|
216
|
+
label: isCustom || typeof finalDataObj == "string" ? val : finalDataObj[displayfield || "label" || Object.keys(finalDataObj)[0]] || "",
|
|
217
|
+
displayValue: isCustom || typeof finalDataObj == "string" ? val : finalDataObj[displayfield || Object.keys(finalDataObj)[0]] || "",
|
|
213
218
|
displayImage: null,
|
|
214
219
|
dataObject: finalDataObj,
|
|
215
220
|
active: false,
|
|
@@ -251,27 +256,32 @@ var WmChips = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
|
|
|
251
256
|
return function (_x) {
|
|
252
257
|
return _ref.apply(this, arguments);
|
|
253
258
|
};
|
|
254
|
-
}(), [datasetItems, maxsize, datafield, displayfield, generateStableKeyCb,
|
|
259
|
+
}(), [datasetItems, maxsize, datafield, displayfield, generateStableKeyCb, isInitialized]);
|
|
255
260
|
var debouncedUpdateQueryModel = (0, _react.useMemo)(function () {
|
|
256
261
|
return (0, _lodash.debounce)(updateQueryModel, 150);
|
|
257
262
|
}, [updateQueryModel]);
|
|
258
263
|
(0, _react.useEffect)(function () {
|
|
259
264
|
if (isInitialized && datavalue !== undefined) {
|
|
260
265
|
debouncedUpdateQueryModel(datavalue);
|
|
266
|
+
} else if (datavalue == undefined || datavalue.length == 0) {
|
|
267
|
+
setChipsList([]);
|
|
268
|
+
setSearchQuery(undefined);
|
|
269
|
+
setModelByValue([]);
|
|
270
|
+
updateMaxSize(0);
|
|
261
271
|
}
|
|
262
272
|
}, [datavalue, debouncedUpdateQueryModel]);
|
|
263
273
|
var addItem = (0, _react.useCallback)(function (newItem) {
|
|
264
|
-
(0, _utils.performAddItem)(newItem, chipsList, modelByValue, setChipsList, setModelByValue, setSearchQuery, updateMaxSize, listener, name, datafield, displayfield, createCustomDataModel, generateUniqueKey, maxsize, onBeforeadd, onChange, onAdd, props);
|
|
265
|
-
}, [chipsList, modelByValue, updateMaxSize, onChange, onAdd, onBeforeadd,
|
|
274
|
+
(0, _utils.performAddItem)(newItem, chipsList, modelByValue, setChipsList, setModelByValue, setSearchQuery, updateMaxSize, listener, name, datafield, displayfield || "label", createCustomDataModel, generateUniqueKey, maxsize || 0, onBeforeadd, onChange, onAdd, props);
|
|
275
|
+
}, [chipsList, modelByValue, updateMaxSize, onChange, onAdd, onBeforeadd, name, datafield, displayfield, createCustomDataModel, generateUniqueKey, maxsize, props]);
|
|
266
276
|
var removeItem = (0, _react.useCallback)(function (event, item, index) {
|
|
267
277
|
(0, _utils.performRemoveItem)(event, item, index, chipsList, modelByValue, setChipsList, setModelByValue, updateMaxSize, listener, name, onBeforeremove, onChange, onRemove, props);
|
|
268
|
-
}, [chipsList, modelByValue, updateMaxSize, onChange, onRemove, onBeforeremove,
|
|
278
|
+
}, [chipsList, modelByValue, updateMaxSize, onChange, onRemove, onBeforeremove, name, props]);
|
|
269
279
|
var handleChipClick = (0, _react.useCallback)(function (event, chip, index) {
|
|
270
280
|
if (readonly) return;
|
|
271
281
|
if (onChipclick && listener !== null && listener !== void 0 && listener.Widgets && name && name in listener.Widgets) {
|
|
272
282
|
onChipclick(event, listener.Widgets[name], chip);
|
|
273
283
|
}
|
|
274
|
-
}, [readonly, onChipclick,
|
|
284
|
+
}, [readonly, onChipclick, name]);
|
|
275
285
|
var handleChipSelect = (0, _react.useCallback)(function (chip, index) {
|
|
276
286
|
if (readonly) return;
|
|
277
287
|
var newChipsList = chipsList.map(function (item, i) {
|
|
@@ -283,7 +293,7 @@ var WmChips = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
|
|
|
283
293
|
if (onChipselect && listener !== null && listener !== void 0 && listener.Widgets && name && name in listener.Widgets) {
|
|
284
294
|
onChipselect(new MouseEvent("focus"), listener.Widgets[name], chip);
|
|
285
295
|
}
|
|
286
|
-
}, [readonly, chipsList, onChipselect,
|
|
296
|
+
}, [readonly, chipsList, onChipselect, name]);
|
|
287
297
|
var handleKeyDown = (0, _react.useCallback)(function (event, index) {
|
|
288
298
|
if (readonly) return;
|
|
289
299
|
if ((event.key == "Backspace" || event.key == "Delete") && index !== undefined) {
|
|
@@ -292,8 +302,9 @@ var WmChips = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
|
|
|
292
302
|
}, [readonly, chipsList, removeItem]);
|
|
293
303
|
var handleSearchSelect = (0, _react.useCallback)(function (event, widget, selectedValue) {
|
|
294
304
|
if (selectedValue) {
|
|
295
|
-
addItem(selectedValue);
|
|
305
|
+
addItem(selectedValue.dataObject ? selectedValue.dataObject : selectedValue);
|
|
296
306
|
setSearchQuery("");
|
|
307
|
+
backspaceArmedRef.current = false;
|
|
297
308
|
}
|
|
298
309
|
}, [addItem]);
|
|
299
310
|
var handleSearchSubmit = (0, _react.useCallback)(function (event, widget) {
|
|
@@ -303,9 +314,13 @@ var WmChips = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
|
|
|
303
314
|
if (allowonlyselect) return;
|
|
304
315
|
if (maxsize && chipsList.length >= maxsize) return;
|
|
305
316
|
addItem(trimmedQuery);
|
|
317
|
+
setSearchQuery("");
|
|
318
|
+
backspaceArmedRef.current = false;
|
|
306
319
|
}, [searchQuery, allowonlyselect, addItem, maxsize, chipsList.length]);
|
|
307
320
|
var handleSearchChange = (0, _react.useCallback)(function (event, widget, newValue) {
|
|
308
321
|
setSearchQuery(newValue || "");
|
|
322
|
+
// Any typing disarms backspace-delete
|
|
323
|
+
backspaceArmedRef.current = false;
|
|
309
324
|
}, []);
|
|
310
325
|
var handleSearchAction = (0, _react.useCallback)(function (event, widget) {
|
|
311
326
|
var currentQuery = (widget === null || widget === void 0 ? void 0 : widget.query) || searchQuery;
|
|
@@ -316,10 +331,38 @@ var WmChips = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
|
|
|
316
331
|
addItem(trimmedQuery);
|
|
317
332
|
}, [searchQuery, allowonlyselect, addItem, maxsize, chipsList.length]);
|
|
318
333
|
var handleSearchKeyDown = (0, _react.useCallback)(function (event) {
|
|
319
|
-
|
|
334
|
+
// Two-step backspace: first focuses last chip, second deletes it
|
|
335
|
+
if (event.key === "Backspace") {
|
|
336
|
+
var _ref2, _inputElement$value;
|
|
320
337
|
var inputElement = event.target;
|
|
321
|
-
var currentQuery = (inputElement === null || inputElement === void 0 ? void 0 : inputElement.value)
|
|
322
|
-
|
|
338
|
+
var currentQuery = ((_ref2 = (_inputElement$value = inputElement === null || inputElement === void 0 ? void 0 : inputElement.value) !== null && _inputElement$value !== void 0 ? _inputElement$value : searchQuery) !== null && _ref2 !== void 0 ? _ref2 : "").trim();
|
|
339
|
+
if (!readonly && !disabled && currentQuery === "" && chipsList.length > 0) {
|
|
340
|
+
if (!backspaceArmedRef.current) {
|
|
341
|
+
// Mark last chip active and move focus to it
|
|
342
|
+
setChipsList(function (prev) {
|
|
343
|
+
return prev.map(function (c, i) {
|
|
344
|
+
return _objectSpread(_objectSpread({}, c), {}, {
|
|
345
|
+
active: i === prev.length - 1
|
|
346
|
+
});
|
|
347
|
+
});
|
|
348
|
+
});
|
|
349
|
+
event.preventDefault();
|
|
350
|
+
backspaceArmedRef.current = true;
|
|
351
|
+
return;
|
|
352
|
+
} else {
|
|
353
|
+
event.preventDefault();
|
|
354
|
+
var lastIndex = chipsList.length - 1;
|
|
355
|
+
removeItem(event, chipsList[lastIndex], lastIndex);
|
|
356
|
+
backspaceArmedRef.current = false;
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
if (event.key === "Enter") {
|
|
362
|
+
event.preventDefault();
|
|
363
|
+
var _inputElement = event.target;
|
|
364
|
+
var _currentQuery = (_inputElement === null || _inputElement === void 0 ? void 0 : _inputElement.value) || searchQuery || "";
|
|
365
|
+
var trimmedQuery = (0, _lodash.trim)(_currentQuery);
|
|
323
366
|
if (!trimmedQuery) {
|
|
324
367
|
return;
|
|
325
368
|
}
|
|
@@ -330,7 +373,28 @@ var WmChips = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
|
|
|
330
373
|
return;
|
|
331
374
|
}
|
|
332
375
|
}
|
|
333
|
-
|
|
376
|
+
// Any other key disarms backspace-delete
|
|
377
|
+
if (event.key !== "Backspace") {
|
|
378
|
+
backspaceArmedRef.current = false;
|
|
379
|
+
}
|
|
380
|
+
}, [searchQuery, readonly, disabled, chipsList, removeItem, allowonlyselect, maxsize]);
|
|
381
|
+
|
|
382
|
+
// Clear search input when the parent form emits a reset
|
|
383
|
+
var rootRef = (0, _react.useRef)(null);
|
|
384
|
+
(0, _react.useEffect)(function () {
|
|
385
|
+
// since this seach widget inside the form is not in control to make in control getting a dispatched event.
|
|
386
|
+
var container = rootRef.current;
|
|
387
|
+
var formEl = container === null || container === void 0 ? void 0 : container.closest("form");
|
|
388
|
+
if (!formEl) return;
|
|
389
|
+
var handleFormReset = function handleFormReset() {
|
|
390
|
+
setSearchQuery(undefined);
|
|
391
|
+
backspaceArmedRef.current = false;
|
|
392
|
+
};
|
|
393
|
+
formEl.addEventListener("wmformreset", handleFormReset);
|
|
394
|
+
return function () {
|
|
395
|
+
formEl.removeEventListener("wmformreset", handleFormReset);
|
|
396
|
+
};
|
|
397
|
+
}, []);
|
|
334
398
|
var renderChipsList = function renderChipsList() {
|
|
335
399
|
var sensors = (0, _core.useSensors)((0, _core.useSensor)(_core.PointerSensor, {
|
|
336
400
|
activationConstraint: {
|
|
@@ -387,8 +451,7 @@ var WmChips = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
|
|
|
387
451
|
display: "flex",
|
|
388
452
|
flexWrap: "wrap",
|
|
389
453
|
gap: 1,
|
|
390
|
-
className: DEFAULT_CLASS,
|
|
391
|
-
name: name
|
|
454
|
+
className: (0, _clsx["default"])(DEFAULT_CLASS, className)
|
|
392
455
|
}, inputposition === "first" && renderSearchInput(), chipsList.map(function (chip, index) {
|
|
393
456
|
return __jsx(_SortableChip["default"], {
|
|
394
457
|
key: chip.key,
|
|
@@ -412,8 +475,8 @@ var WmChips = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
|
|
|
412
475
|
display: "flex",
|
|
413
476
|
flexWrap: "wrap",
|
|
414
477
|
gap: 1,
|
|
415
|
-
className: DEFAULT_CLASS,
|
|
416
|
-
|
|
478
|
+
className: (0, _clsx["default"])(DEFAULT_CLASS, className),
|
|
479
|
+
"aria-readonly": readonly
|
|
417
480
|
}, inputposition === "first" && renderSearchInput(), chipsList.map(function (chip, index) {
|
|
418
481
|
return __jsx(_SortableChip["default"], {
|
|
419
482
|
key: chip.key,
|
|
@@ -435,11 +498,11 @@ var WmChips = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
|
|
|
435
498
|
var renderSearchInput = function renderSearchInput() {
|
|
436
499
|
return __jsx(_material.Box, {
|
|
437
500
|
component: "li",
|
|
438
|
-
className: (0, _clsx["default"])("app-chip-search",
|
|
501
|
+
className: (0, _clsx["default"])("app-chip-search", {
|
|
439
502
|
"full-width": isFullWidth
|
|
440
503
|
})
|
|
441
|
-
}, __jsx(_search["default"], {
|
|
442
|
-
name: "
|
|
504
|
+
}, __jsx(_search["default"], (0, _extends2["default"])({}, props, {
|
|
505
|
+
name: "".concat(name, "_app-chip-search"),
|
|
443
506
|
disabled: disabled || saturate,
|
|
444
507
|
readonly: readonly,
|
|
445
508
|
datafield: datafield,
|
|
@@ -472,17 +535,25 @@ var WmChips = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
|
|
|
472
535
|
"class": "app-chip-input",
|
|
473
536
|
width: isFullWidth ? "100%" : undefined,
|
|
474
537
|
autofocus: autofocus,
|
|
475
|
-
|
|
476
|
-
|
|
538
|
+
isSearchInChips: true,
|
|
539
|
+
dataPath: dataPath,
|
|
540
|
+
ignoreInForm: true
|
|
541
|
+
})));
|
|
477
542
|
};
|
|
478
543
|
return __jsx(_material.Box, {
|
|
479
|
-
|
|
544
|
+
hidden: (_props$hidden = props.hidden) !== null && _props$hidden !== void 0 ? _props$hidden : false,
|
|
480
545
|
component: "div",
|
|
546
|
+
ref: rootRef,
|
|
481
547
|
style: _objectSpread({
|
|
482
548
|
width: width,
|
|
483
549
|
height: height
|
|
484
550
|
}, styles)
|
|
485
551
|
}, renderChipsList());
|
|
552
|
+
}, function (prev, next) {
|
|
553
|
+
var keys = ["allowonlyselect", "autofocus", "chipclass", "className", "datafield", "dataset", "datavalue", "dateformat", "disabled", "displayexpression", "displayfield", "displayimagesrc", "enablereorder", "groupby", "inputposition", "inputwidth", "limit", "match", "matchmode", "maxsize", "minchars", "name", "orderby", "placeholder", "readonly", "searchkey", "showsearchicon", "tabindex", "type", "debouncetime", "datacompletemsg", "width", "height", "styles", "dataPath", "hidden"];
|
|
554
|
+
return keys.every(function (key) {
|
|
555
|
+
return (0, _lodash.isEqual)(prev[key], next[key]);
|
|
556
|
+
});
|
|
486
557
|
});
|
|
487
558
|
WmChips.displayName = "WmChips";
|
|
488
|
-
var _default = exports["default"] = (0, _withBaseWrapper.withBaseWrapper)(WmChips);
|
|
559
|
+
var _default = exports["default"] = (0, _withBaseWrapper.withBaseWrapper)((0, _withFormController["default"])(WmChips));
|
|
@@ -56,9 +56,22 @@ function processDataset(data, displayfield, displayexpression, displayimagesrc,
|
|
|
56
56
|
return normalizedData.map(function (item, index) {
|
|
57
57
|
if ((0, _typeof2["default"])(item) === "object" && item !== null) {
|
|
58
58
|
var displayKey = displayfield || Object.keys(item)[0];
|
|
59
|
+
// Align with Angular: for non "All Fields", value should be the item's datafield (e.g., id)
|
|
60
|
+
var finalValue;
|
|
61
|
+
if (datafield === "All Fields") {
|
|
62
|
+
finalValue = item;
|
|
63
|
+
} else {
|
|
64
|
+
if (Object.prototype.hasOwnProperty.call(item, datafield)) {
|
|
65
|
+
finalValue = item[datafield];
|
|
66
|
+
} else if (Object.prototype.hasOwnProperty.call(item, "key")) {
|
|
67
|
+
finalValue = item.key;
|
|
68
|
+
} else {
|
|
69
|
+
finalValue = item;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
59
72
|
return {
|
|
60
73
|
key: generateStableKeyFn(item, index),
|
|
61
|
-
value:
|
|
74
|
+
value: finalValue,
|
|
62
75
|
label: item[displayKey] || "",
|
|
63
76
|
displayValue: displayexpression ? displayexpression(item) : item[displayKey] || "",
|
|
64
77
|
displayImage: displayimagesrc ? item[displayimagesrc] : null,
|
|
@@ -125,9 +138,10 @@ function updateChipsListAndTriggerEvents(newChipsList, newModelByValue, setChips
|
|
|
125
138
|
|
|
126
139
|
// Trigger listener.onChange if available
|
|
127
140
|
if (listener !== null && listener !== void 0 && listener.onChange) {
|
|
128
|
-
listener.onChange(
|
|
141
|
+
listener.onChange(props.fieldName || name, {
|
|
142
|
+
// ...props,
|
|
129
143
|
datavalue: newModelByValue
|
|
130
|
-
})
|
|
144
|
+
});
|
|
131
145
|
}
|
|
132
146
|
|
|
133
147
|
// Trigger specific events (onAdd, onRemove)
|
|
@@ -198,6 +212,21 @@ function validateAddItem(newItem, chipsList, maxsize, datafield) {
|
|
|
198
212
|
if (maxsize && chipsList.length >= maxsize) {
|
|
199
213
|
return false;
|
|
200
214
|
}
|
|
215
|
+
// Disallow empty/whitespace items
|
|
216
|
+
if (newItem && (0, _typeof2["default"])(newItem) === "object") {
|
|
217
|
+
if (datafield === "All Fields") {
|
|
218
|
+
var _ref, _newItem$label;
|
|
219
|
+
var text = (0, _lodash.toString)((_ref = (_newItem$label = newItem.label) !== null && _newItem$label !== void 0 ? _newItem$label : newItem.displayValue) !== null && _ref !== void 0 ? _ref : "").trim();
|
|
220
|
+
if (!text) {
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
223
|
+
} else {
|
|
224
|
+
var val = newItem.value;
|
|
225
|
+
if (val === undefined || val === null || (0, _lodash.toString)(val).trim() === "") {
|
|
226
|
+
return false;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
201
230
|
if (isDuplicate(chipsList, newItem, datafield)) {
|
|
202
231
|
return false;
|
|
203
232
|
}
|
|
@@ -215,6 +244,7 @@ function validateSearchInput(query, allowonlyselect, maxsize, chipsList) {
|
|
|
215
244
|
|
|
216
245
|
// Common functionality for add item operation
|
|
217
246
|
function performAddItem(newItem, chipsList, modelByValue, setChipsList, setModelByValue, setSearchQuery, updateMaxSizeFn, listener, name, datafield, displayfield, createCustomDataModel, generateUniqueKey, maxsize, onBeforeadd, onChange, onAdd, props) {
|
|
247
|
+
var _itemToAdd$dataObject, _itemToAdd$dataObject2;
|
|
218
248
|
// Validate before adding
|
|
219
249
|
if (!validateAddItem(newItem, chipsList, maxsize, datafield)) {
|
|
220
250
|
setSearchQuery("");
|
|
@@ -232,7 +262,7 @@ function performAddItem(newItem, chipsList, modelByValue, setChipsList, setModel
|
|
|
232
262
|
// Create chip item with proper structure
|
|
233
263
|
var chipItem = createChipItemWithStructure(itemToAdd);
|
|
234
264
|
var newChipsList = [].concat((0, _toConsumableArray2["default"])(chipsList), [chipItem]);
|
|
235
|
-
var newModelByValue = [].concat((0, _toConsumableArray2["default"])(modelByValue), [itemToAdd.value]);
|
|
265
|
+
var newModelByValue = [].concat((0, _toConsumableArray2["default"])(modelByValue), [(_itemToAdd$dataObject = itemToAdd === null || itemToAdd === void 0 || (_itemToAdd$dataObject2 = itemToAdd.dataObject) === null || _itemToAdd$dataObject2 === void 0 ? void 0 : _itemToAdd$dataObject2.value) !== null && _itemToAdd$dataObject !== void 0 ? _itemToAdd$dataObject : itemToAdd.value]);
|
|
236
266
|
|
|
237
267
|
// Update chips list and trigger events
|
|
238
268
|
updateChipsListAndTriggerEvents(newChipsList, newModelByValue, setChipsList, setModelByValue, updateMaxSizeFn, listener, name, new MouseEvent("change"), onChange, onAdd, undefined, chipItem, modelByValue, props);
|