@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,6 +16,7 @@ var lodash = _interopRequireWildcard(require("lodash-es"));
|
|
|
16
16
|
var _withBaseWrapper = require("@wavemaker/react-runtime/higherOrder/withBaseWrapper");
|
|
17
17
|
var _withFormController = _interopRequireDefault(require("@wavemaker/react-runtime/components/data/form/form-controller/withFormController"));
|
|
18
18
|
var _delay = _interopRequireDefault(require("lodash/delay"));
|
|
19
|
+
var _util = require("../util");
|
|
19
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); }
|
|
20
21
|
var __jsx = _react["default"].createElement;
|
|
21
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; }
|
|
@@ -295,18 +296,22 @@ var WmTextarea = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
|
295
296
|
} : {}), props.onClick ? {
|
|
296
297
|
onClick: props.onClick
|
|
297
298
|
} : {});
|
|
299
|
+
var value = (0, _util.sanitizeInputValue)(displayValue);
|
|
300
|
+
var isEditable = !readonly && !disabled;
|
|
298
301
|
return __jsx(_react["default"].Fragment, null, __jsx(_TextField["default"], (0, _extends2["default"])({
|
|
302
|
+
hidden: props.hidden,
|
|
299
303
|
multiline: true,
|
|
300
304
|
variant: "standard",
|
|
301
305
|
name: name,
|
|
302
306
|
title: props.hint,
|
|
303
307
|
id: id || name,
|
|
304
308
|
placeholder: placeholder || "Place your text here",
|
|
305
|
-
value:
|
|
309
|
+
value: value,
|
|
306
310
|
required: required,
|
|
307
311
|
disabled: disabled,
|
|
308
312
|
error: isDirty && error.show,
|
|
309
313
|
className: (0, _clsx["default"])("app-input-wrapper", isTouched ? "ng-touched" : "ng-untouched", isDirty && "ng-invalid"),
|
|
314
|
+
style: styles,
|
|
310
315
|
"aria-readonly": readonly,
|
|
311
316
|
slotProps: {
|
|
312
317
|
htmlInput: {
|
|
@@ -320,23 +325,21 @@ var WmTextarea = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
|
320
325
|
ref: textareaRef,
|
|
321
326
|
onKeyDown: handleKeyDown,
|
|
322
327
|
onKeyUp: handleKeyUp,
|
|
323
|
-
className: (0, _clsx["default"])(DEFAULT_CLASS, className, isTouched ? "ng-touched" : "ng-untouched", isDirty && "ng-invalid"),
|
|
324
|
-
pattern: regexp
|
|
325
|
-
style: _objectSpread({
|
|
326
|
-
height: "none",
|
|
327
|
-
resize: "both",
|
|
328
|
-
overflow: "auto"
|
|
329
|
-
}, styles)
|
|
328
|
+
className: (0, _clsx["default"])(DEFAULT_CLASS, className, isTouched ? "ng-touched" : "ng-untouched", isDirty && "ng-invalid", isEditable ? "wm-textarea-editable" : ""),
|
|
329
|
+
pattern: regexp
|
|
330
330
|
}
|
|
331
331
|
},
|
|
332
332
|
sx: {
|
|
333
|
-
width: "100%"
|
|
333
|
+
width: "100%",
|
|
334
|
+
"& .MuiInputBase-input": _objectSpread({}, styles.height ? {
|
|
335
|
+
height: "".concat(styles.height, " !important")
|
|
336
|
+
} : {})
|
|
334
337
|
}
|
|
335
338
|
}, events)), maxchars && __jsx(_Box["default"], {
|
|
336
339
|
className: "textarea-count"
|
|
337
340
|
}, limitdisplaytext.replaceAll("undefined", "".concat((displayValue === null || displayValue === void 0 ? void 0 : displayValue.length) || 0))));
|
|
338
341
|
}, function (prev, current) {
|
|
339
|
-
var keys = ["datavalue", "disabled", "required", "readonly", "placeholder", "maxchars", "tabindex", "shortcutkey", "autofocus", "arialabel", "limitdisplaytext"];
|
|
342
|
+
var keys = ["datavalue", "disabled", "required", "readonly", "placeholder", "maxchars", "tabindex", "shortcutkey", "autofocus", "arialabel", "limitdisplaytext", "hidden"];
|
|
340
343
|
return keys.every(function (key) {
|
|
341
344
|
return prev[key] === current[key];
|
|
342
345
|
});
|
|
@@ -0,0 +1,124 @@
|
|
|
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 _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _link = _interopRequireDefault(require("next/link"));
|
|
12
|
+
var _withBaseWrapper = require("@wavemaker/react-runtime/higherOrder/withBaseWrapper");
|
|
13
|
+
var _withFormController = _interopRequireDefault(require("../../data/form/form-controller/withFormController"));
|
|
14
|
+
var _image = _interopRequireDefault(require("next/image"));
|
|
15
|
+
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); }
|
|
16
|
+
var __jsx = _react["default"].createElement;
|
|
17
|
+
var WmUpload = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
18
|
+
var name = props.name,
|
|
19
|
+
formField = props.formField,
|
|
20
|
+
datavalue = props.datavalue,
|
|
21
|
+
_props$readonly = props.readonly,
|
|
22
|
+
readonly = _props$readonly === void 0 ? false : _props$readonly,
|
|
23
|
+
_props$required = props.required,
|
|
24
|
+
required = _props$required === void 0 ? false : _props$required,
|
|
25
|
+
type = props.type,
|
|
26
|
+
onChange = props.onChange,
|
|
27
|
+
className = props.className,
|
|
28
|
+
style = props.style,
|
|
29
|
+
onFocus = props.onFocus,
|
|
30
|
+
onBlur = props.onBlur,
|
|
31
|
+
_props$disabled = props.disabled,
|
|
32
|
+
disabled = _props$disabled === void 0 ? false : _props$disabled,
|
|
33
|
+
listener = props.listener;
|
|
34
|
+
var fileInputRef = (0, _react.useRef)(null);
|
|
35
|
+
var prevDatavalue = (0, _react.useRef)(datavalue);
|
|
36
|
+
|
|
37
|
+
// Check if we have existing file data
|
|
38
|
+
var isImage = (formField === null || formField === void 0 ? void 0 : formField.filetype) === "image";
|
|
39
|
+
var handleFileChange = function handleFileChange(event) {
|
|
40
|
+
var _event$target$files;
|
|
41
|
+
var file = ((_event$target$files = event.target.files) === null || _event$target$files === void 0 ? void 0 : _event$target$files[0]) || null;
|
|
42
|
+
|
|
43
|
+
// For blob type, we need to call listener.onChange to update the form data
|
|
44
|
+
// The form controller will handle the actual value from the event.target.value
|
|
45
|
+
if (type === "file") {
|
|
46
|
+
var _listener$onChange;
|
|
47
|
+
listener === null || listener === void 0 || (_listener$onChange = listener.onChange) === null || _listener$onChange === void 0 || _listener$onChange.call(listener, props.fieldName || props.name, {
|
|
48
|
+
datavalue: file
|
|
49
|
+
});
|
|
50
|
+
} else {
|
|
51
|
+
var _listener$onChange2;
|
|
52
|
+
// For blob type, pass the file name/path from the input value
|
|
53
|
+
listener === null || listener === void 0 || (_listener$onChange2 = listener.onChange) === null || _listener$onChange2 === void 0 || _listener$onChange2.call(listener, props.fieldName || props.name, {
|
|
54
|
+
datavalue: event.target.value
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
if (onChange) {
|
|
58
|
+
onChange(event, listener === null || listener === void 0 ? void 0 : listener.Widgets[name], type === "file" ? file : event.target.value, prevDatavalue.current);
|
|
59
|
+
}
|
|
60
|
+
prevDatavalue.current = file;
|
|
61
|
+
};
|
|
62
|
+
var handleFileFocus = function handleFileFocus(event) {
|
|
63
|
+
if (onFocus) {
|
|
64
|
+
onFocus(event, listener === null || listener === void 0 ? void 0 : listener.Widgets[name]);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
var handleFileBlur = function handleFileBlur(event) {
|
|
68
|
+
if (onBlur) {
|
|
69
|
+
onBlur(event, listener === null || listener === void 0 ? void 0 : listener.Widgets[name]);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
// Render existing file display
|
|
74
|
+
var renderExistingFile = (0, _react.useCallback)(function () {
|
|
75
|
+
var fileUrl = (formField === null || formField === void 0 ? void 0 : formField.href) || (formField === null || formField === void 0 ? void 0 : formField.datavalue);
|
|
76
|
+
if (!fileUrl || type !== "file") return null;
|
|
77
|
+
return __jsx("div", {
|
|
78
|
+
className: "existing-file-display"
|
|
79
|
+
}, isImage ? __jsx(_link["default"], {
|
|
80
|
+
className: "form-control-static",
|
|
81
|
+
href: fileUrl
|
|
82
|
+
}, __jsx(_image["default"], {
|
|
83
|
+
style: {
|
|
84
|
+
height: "2em"
|
|
85
|
+
},
|
|
86
|
+
className: "wi wi-file",
|
|
87
|
+
src: fileUrl,
|
|
88
|
+
alt: "Existing file"
|
|
89
|
+
})) : __jsx(_link["default"], {
|
|
90
|
+
className: "form-control-static",
|
|
91
|
+
href: fileUrl
|
|
92
|
+
}, __jsx("i", {
|
|
93
|
+
className: "wi wi-file"
|
|
94
|
+
})));
|
|
95
|
+
}, [formField === null || formField === void 0 ? void 0 : formField.href, formField === null || formField === void 0 ? void 0 : formField.datavalue, isImage, type]);
|
|
96
|
+
(0, _react.useEffect)(function () {
|
|
97
|
+
if (!datavalue) {
|
|
98
|
+
// clear field input value
|
|
99
|
+
fileInputRef.current && (fileInputRef.current.value = "");
|
|
100
|
+
}
|
|
101
|
+
}, [datavalue]);
|
|
102
|
+
return __jsx("div", {
|
|
103
|
+
className: className,
|
|
104
|
+
style: style
|
|
105
|
+
}, renderExistingFile(), __jsx("input", (0, _extends2["default"])({}, props, {
|
|
106
|
+
hidden: props.hidden,
|
|
107
|
+
ref: fileInputRef,
|
|
108
|
+
type: "file",
|
|
109
|
+
name: "".concat(name, "_formWidget"),
|
|
110
|
+
className: "app-blob-upload",
|
|
111
|
+
required: required,
|
|
112
|
+
readOnly: readonly,
|
|
113
|
+
disabled: disabled,
|
|
114
|
+
onChange: handleFileChange,
|
|
115
|
+
onFocus: handleFileFocus,
|
|
116
|
+
onBlur: handleFileBlur
|
|
117
|
+
})));
|
|
118
|
+
}, function (prev, current) {
|
|
119
|
+
var keys = ["name", "formField", "datavalue", "readonly", "required", "type", "onChange", "className", "style"];
|
|
120
|
+
return keys.every(function (key) {
|
|
121
|
+
return prev[key] === current[key];
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
var _default = exports["default"] = (0, _withBaseWrapper.withBaseWrapper)((0, _withFormController["default"])(WmUpload));
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.sanitizeInputValue = void 0;
|
|
8
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
9
|
+
var sanitizeInputValue = exports.sanitizeInputValue = function sanitizeInputValue(value) {
|
|
10
|
+
return value === null || value === undefined ? "" : (0, _typeof2["default"])(value) === "object" || Array.isArray(value) ? "" : String(value) === "[object Object]" || String(value).startsWith("[object ") ? "" : String(value);
|
|
11
|
+
};
|
|
@@ -8,23 +8,49 @@ 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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
12
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
12
13
|
var _clsx = _interopRequireDefault(require("clsx"));
|
|
13
14
|
var _Box = _interopRequireDefault(require("@mui/material/Box"));
|
|
15
|
+
var _Link = _interopRequireDefault(require("@mui/material/Link"));
|
|
14
16
|
var _withBaseWrapper = require("@wavemaker/react-runtime/higherOrder/withBaseWrapper");
|
|
15
|
-
var
|
|
17
|
+
var _button = require("@wavemaker/react-runtime/components/form/button");
|
|
18
|
+
var _excluded = ["className", "children", "styles", "id", "title", "brandHref", "showToggle", "listener"];
|
|
16
19
|
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); }
|
|
17
20
|
var __jsx = _react["default"].createElement;
|
|
21
|
+
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; }
|
|
22
|
+
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; }
|
|
18
23
|
var DEFAULT_CLASS = "navbar navbar-default app-navbar";
|
|
19
24
|
var WmNavbar = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
20
25
|
var className = props.className,
|
|
21
26
|
children = props.children,
|
|
22
27
|
styles = props.styles,
|
|
23
28
|
id = props.id,
|
|
29
|
+
title = props.title,
|
|
30
|
+
_props$brandHref = props.brandHref,
|
|
31
|
+
brandHref = _props$brandHref === void 0 ? "#" : _props$brandHref,
|
|
32
|
+
_props$showToggle = props.showToggle,
|
|
33
|
+
showToggle = _props$showToggle === void 0 ? true : _props$showToggle,
|
|
34
|
+
listener = props.listener,
|
|
24
35
|
restProps = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
|
36
|
+
var _useState = (0, _react.useState)(true),
|
|
37
|
+
isCollapsed = _useState[0],
|
|
38
|
+
setIsCollapsed = _useState[1];
|
|
39
|
+
|
|
40
|
+
// Process backgroundImage to ensure it has url() wrapper
|
|
41
|
+
var processedStyles = (0, _react.useMemo)(function () {
|
|
42
|
+
if (!styles) return styles;
|
|
43
|
+
if (styles !== null && styles !== void 0 && styles.backgroundImage) {
|
|
44
|
+
styles.backgroundImage = "".concat(styles.backgroundImage.includes("url(") ? styles.backgroundImage : "url(" + styles.backgroundImage + ")");
|
|
45
|
+
}
|
|
46
|
+
return _objectSpread({}, styles);
|
|
47
|
+
}, [styles]);
|
|
48
|
+
var handleToggle = function handleToggle() {
|
|
49
|
+
setIsCollapsed(!isCollapsed);
|
|
50
|
+
};
|
|
25
51
|
return __jsx(_Box["default"], (0, _extends2["default"])({
|
|
26
52
|
component: "nav",
|
|
27
|
-
|
|
53
|
+
style: processedStyles,
|
|
28
54
|
className: (0, _clsx["default"])(DEFAULT_CLASS, className),
|
|
29
55
|
id: id
|
|
30
56
|
}, restProps), __jsx(_Box["default"], {
|
|
@@ -32,7 +58,29 @@ var WmNavbar = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
|
32
58
|
className: "container-fluid"
|
|
33
59
|
}, __jsx(_Box["default"], {
|
|
34
60
|
component: "div",
|
|
35
|
-
className: "
|
|
61
|
+
className: "navbar-header"
|
|
62
|
+
}, showToggle && __jsx(_button.WmButton, {
|
|
63
|
+
name: "navbar-toggle",
|
|
64
|
+
type: "button",
|
|
65
|
+
className: (0, _clsx["default"])("btn-transparent navbar-toggle", {
|
|
66
|
+
collapsed: isCollapsed
|
|
67
|
+
}),
|
|
68
|
+
onClick: handleToggle,
|
|
69
|
+
arialabel: "Toggle navigation",
|
|
70
|
+
iconclass: "wi wi-more-vert",
|
|
71
|
+
listener: listener
|
|
72
|
+
}), title && __jsx(_Link["default"], {
|
|
73
|
+
className: "navbar-brand",
|
|
74
|
+
href: brandHref,
|
|
75
|
+
underline: "none"
|
|
76
|
+
}, __jsx("span", {
|
|
77
|
+
className: "title"
|
|
78
|
+
}, title))), __jsx(_Box["default"], {
|
|
79
|
+
component: "div",
|
|
80
|
+
className: (0, _clsx["default"])("navbar-collapse", {
|
|
81
|
+
collapse: isCollapsed,
|
|
82
|
+
"in": !isCollapsed
|
|
83
|
+
})
|
|
36
84
|
}, children)));
|
|
37
85
|
}, function () {
|
|
38
86
|
return true;
|
|
@@ -15,7 +15,8 @@ var _anchor = require("@wavemaker/react-runtime/components/basic/anchor");
|
|
|
15
15
|
var _withBaseWrapper = _interopRequireDefault(require("@wavemaker/react-runtime/higherOrder/withBaseWrapper"));
|
|
16
16
|
var _menu = _interopRequireDefault(require("@wavemaker/react-runtime/components/navigation/menu"));
|
|
17
17
|
var _utils = require("@wavemaker/react-runtime/core/util/utils");
|
|
18
|
-
var
|
|
18
|
+
var _transformedDatasetUtils = require("@wavemaker/react-runtime/utils/transformedDataset-utils");
|
|
19
|
+
var _lodashEs = require("lodash-es");
|
|
19
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); }
|
|
20
21
|
var __jsx = _react["default"].createElement;
|
|
21
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; }
|
|
@@ -27,7 +28,7 @@ var NavClassTypes = {
|
|
|
27
28
|
};
|
|
28
29
|
var DEFAULT_CLASS = "nav app-nav";
|
|
29
30
|
var WmNav = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
30
|
-
var _props$styles, _props$styles2;
|
|
31
|
+
var _props$styles, _props$styles2, _props$hidden;
|
|
31
32
|
var layout = props.layout,
|
|
32
33
|
_props$type = props.type,
|
|
33
34
|
type = _props$type === void 0 ? "navbar" : _props$type,
|
|
@@ -35,8 +36,10 @@ var WmNav = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
|
35
36
|
children = props.children,
|
|
36
37
|
name = props.name,
|
|
37
38
|
styles = props.styles,
|
|
38
|
-
id = props.id
|
|
39
|
-
|
|
39
|
+
id = props.id,
|
|
40
|
+
dataset = props.dataset,
|
|
41
|
+
orderby = props.orderby;
|
|
42
|
+
var path = (0, _utils.getCurrentPath)();
|
|
40
43
|
var _useState = (0, _react.useState)(null),
|
|
41
44
|
activeNavItemIndex = _useState[0],
|
|
42
45
|
setActiveNavItemIndex = _useState[1];
|
|
@@ -44,6 +47,16 @@ var WmNav = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
|
44
47
|
hoveredNavItemIndex = _useState2[0],
|
|
45
48
|
setHoveredNavItemIndex = _useState2[1];
|
|
46
49
|
var activeNavItemIndexRef = (0, _react.useRef)(null);
|
|
50
|
+
|
|
51
|
+
// Apply orderby to dataset
|
|
52
|
+
// Format: "field:direction" or "field1:direction1,field2:direction2"
|
|
53
|
+
// Example: "name:asc" or "priority:desc,name:asc"
|
|
54
|
+
var orderedDataset = (0, _react.useMemo)(function () {
|
|
55
|
+
if (!dataset || !Array.isArray(dataset)) {
|
|
56
|
+
return dataset;
|
|
57
|
+
}
|
|
58
|
+
return (0, _transformedDatasetUtils.getOrderedDataset)(dataset, orderby);
|
|
59
|
+
}, [dataset, orderby]);
|
|
47
60
|
var triggerActionClickForAnchor = function triggerActionClickForAnchor(e, item) {
|
|
48
61
|
e === null || e === void 0 || e.preventDefault();
|
|
49
62
|
(0, _utils.triggerItemAction)({
|
|
@@ -68,6 +81,9 @@ var WmNav = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
|
68
81
|
if (typeof itemlabel === "string") {
|
|
69
82
|
return item[itemlabel];
|
|
70
83
|
}
|
|
84
|
+
if (typeof item === "string") {
|
|
85
|
+
return item;
|
|
86
|
+
}
|
|
71
87
|
|
|
72
88
|
// Fallback
|
|
73
89
|
return item["label"];
|
|
@@ -104,28 +120,29 @@ var WmNav = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
|
104
120
|
if (hasSubactions) {
|
|
105
121
|
return false;
|
|
106
122
|
}
|
|
107
|
-
var itemLink = (0,
|
|
108
|
-
if (itemLink) {
|
|
123
|
+
var itemLink = (0, _utils.getItemLink)(item, props);
|
|
124
|
+
if (itemLink && (0, _lodashEs.isString)(itemLink)) {
|
|
109
125
|
var currentRoute = "#/".concat(path.split("/").filter(Boolean).pop() || "");
|
|
110
|
-
if (itemLink === currentRoute || path === itemLink.replace("#", "")) {
|
|
126
|
+
if (itemLink === currentRoute || path === (itemLink === null || itemLink === void 0 ? void 0 : itemLink.replace("#", ""))) {
|
|
111
127
|
return true;
|
|
112
128
|
}
|
|
113
129
|
}
|
|
114
130
|
return false;
|
|
115
131
|
}, [activeNavItemIndex, path]);
|
|
116
132
|
var renderNavItem = function renderNavItem() {
|
|
117
|
-
if (
|
|
118
|
-
return
|
|
133
|
+
if (orderedDataset && orderedDataset.length > 0) {
|
|
134
|
+
return orderedDataset.map(function (item, index) {
|
|
119
135
|
var label = getItemLabel(item);
|
|
120
136
|
var isActive = isNavItemActive(item, index);
|
|
121
137
|
var subActions = item["itemchildren"] || item["children"] || item["SubActions"];
|
|
122
138
|
var hasSubactions = Array.isArray(subActions) && subActions.length > 0;
|
|
123
139
|
var childComponent = hasSubactions ? __jsx(_menu["default"], {
|
|
124
140
|
name: "",
|
|
141
|
+
autoclose: props.autoclose,
|
|
125
142
|
itemlabel: props.itemlabel,
|
|
126
143
|
itemlink: props.itemlink,
|
|
127
144
|
itemicon: props.itemicon,
|
|
128
|
-
listener:
|
|
145
|
+
listener: props.listener,
|
|
129
146
|
iconclass: item[props.itemicon],
|
|
130
147
|
caption: label,
|
|
131
148
|
dataset: subActions,
|
|
@@ -133,10 +150,11 @@ var WmNav = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
|
133
150
|
isFromNav: true,
|
|
134
151
|
onNavItemActivate: handleNavItemActivate(index),
|
|
135
152
|
onSelect: props.onSelect,
|
|
136
|
-
isNavFromMenu: true
|
|
153
|
+
isNavFromMenu: true,
|
|
154
|
+
showonhover: props.showonhover
|
|
137
155
|
}) : __jsx(_anchor.WmAnchor, {
|
|
138
156
|
name: "",
|
|
139
|
-
listener:
|
|
157
|
+
listener: props.listener,
|
|
140
158
|
caption: label,
|
|
141
159
|
iconclass: item[props.itemicon],
|
|
142
160
|
iconposition: item[props.iconposition],
|
|
@@ -166,9 +184,14 @@ var WmNav = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
|
166
184
|
}
|
|
167
185
|
return children;
|
|
168
186
|
};
|
|
187
|
+
var _ref = styles || {},
|
|
188
|
+
backgroundImage = _ref.backgroundImage,
|
|
189
|
+
backgroundRepeat = _ref.backgroundRepeat,
|
|
190
|
+
backgroundPosition = _ref.backgroundPosition,
|
|
191
|
+
textAlign = _ref.textAlign;
|
|
169
192
|
return __jsx(_List["default"], {
|
|
170
193
|
disablePadding: true,
|
|
171
|
-
sx:
|
|
194
|
+
sx: {
|
|
172
195
|
"&": {
|
|
173
196
|
width: ((_props$styles = props.styles) === null || _props$styles === void 0 ? void 0 : _props$styles.width) || "auto",
|
|
174
197
|
height: ((_props$styles2 = props.styles) === null || _props$styles2 === void 0 ? void 0 : _props$styles2.height) || "auto",
|
|
@@ -177,13 +200,20 @@ var WmNav = /*#__PURE__*/(0, _react.memo)(function (props) {
|
|
|
177
200
|
" & .MuiListItem-root": {
|
|
178
201
|
width: "auto"
|
|
179
202
|
}
|
|
180
|
-
},
|
|
203
|
+
},
|
|
204
|
+
style: _objectSpread(_objectSpread({}, styles), {}, {
|
|
205
|
+
backgroundImage: backgroundImage,
|
|
206
|
+
backgroundRepeat: backgroundRepeat,
|
|
207
|
+
backgroundPosition: backgroundPosition
|
|
208
|
+
}),
|
|
181
209
|
role: "navigation",
|
|
182
210
|
className: (0, _clsx["default"])(DEFAULT_CLASS, className, "nav-".concat(layout, " ").concat(NavClassTypes[type])),
|
|
183
|
-
id: id
|
|
211
|
+
id: id,
|
|
212
|
+
name: props.name,
|
|
213
|
+
hidden: (_props$hidden = props.hidden) !== null && _props$hidden !== void 0 ? _props$hidden : false
|
|
184
214
|
}, renderNavItem());
|
|
185
215
|
}, function (prev, current) {
|
|
186
|
-
var keys = ["layout", "type", "className", "styles", "children"];
|
|
216
|
+
var keys = ["layout", "type", "className", "styles", "children", "dataset", "orderby"];
|
|
187
217
|
return keys.every(function (key) {
|
|
188
218
|
return prev[key] === current[key];
|
|
189
219
|
});
|
|
@@ -7,10 +7,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports["default"] = exports.WmNavItem = void 0;
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
11
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
11
13
|
var _clsx = _interopRequireDefault(require("clsx"));
|
|
12
14
|
var _ListItem = _interopRequireDefault(require("@mui/material/ListItem"));
|
|
13
15
|
var _withBaseWrapper = require("@wavemaker/react-runtime/higherOrder/withBaseWrapper");
|
|
16
|
+
var _excluded = ["className", "styles", "id", "onMouseEnter", "onMouseLeave", "name"];
|
|
14
17
|
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); }
|
|
15
18
|
var __jsx = _react["default"].createElement;
|
|
16
19
|
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; }
|
|
@@ -21,8 +24,10 @@ var WmNavItem = exports.WmNavItem = /*#__PURE__*/(0, _react.memo)(function (prop
|
|
|
21
24
|
styles = props.styles,
|
|
22
25
|
id = props.id,
|
|
23
26
|
onMouseEnter = props.onMouseEnter,
|
|
24
|
-
onMouseLeave = props.onMouseLeave
|
|
25
|
-
|
|
27
|
+
onMouseLeave = props.onMouseLeave,
|
|
28
|
+
name = props.name,
|
|
29
|
+
rest = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
|
30
|
+
return __jsx(_ListItem["default"], (0, _extends2["default"])({}, rest, {
|
|
26
31
|
name: name,
|
|
27
32
|
id: id,
|
|
28
33
|
sx: _objectSpread(_objectSpread({
|
|
@@ -30,15 +35,16 @@ var WmNavItem = exports.WmNavItem = /*#__PURE__*/(0, _react.memo)(function (prop
|
|
|
30
35
|
}, styles), {}, {
|
|
31
36
|
width: "inherit",
|
|
32
37
|
margin: "inherit",
|
|
33
|
-
padding: "inherit"
|
|
38
|
+
padding: "inherit",
|
|
39
|
+
textAlign: styles !== null && styles !== void 0 && styles.textAlign ? "".concat(styles.textAlign, " !important") : "inherit"
|
|
34
40
|
}),
|
|
35
41
|
className: (0, _clsx["default"])(DEFAULT_CLASS, className),
|
|
36
42
|
title: props.hint,
|
|
37
43
|
onMouseEnter: onMouseEnter,
|
|
38
44
|
onMouseLeave: onMouseLeave
|
|
39
|
-
}, props.children);
|
|
45
|
+
}), props.children);
|
|
40
46
|
}, function (prev, current) {
|
|
41
|
-
var keys = ["className", "styles", "children"];
|
|
47
|
+
var keys = ["className", "styles", "children", "hidden"];
|
|
42
48
|
return keys.every(function (key) {
|
|
43
49
|
return prev[key] === current[key];
|
|
44
50
|
});
|
|
@@ -32,6 +32,9 @@ var MenuList = exports.MenuList = /*#__PURE__*/(0, _react.memo)(function (_ref)
|
|
|
32
32
|
onMouseEnter = _ref.onMouseEnter,
|
|
33
33
|
onMouseLeave = _ref.onMouseLeave,
|
|
34
34
|
onClick = _ref.onClick;
|
|
35
|
+
if (_react["default"].Children.count(children) === 0) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
35
38
|
return __jsx(_material.List, {
|
|
36
39
|
className: className,
|
|
37
40
|
role: role,
|
|
@@ -47,7 +47,8 @@ var AUTO_CLOSE = exports.AUTO_CLOSE = {
|
|
|
47
47
|
OUTSIDE_CLICK: "outsideClick",
|
|
48
48
|
// Now matches exactly the string "outsideClick"
|
|
49
49
|
ON_MOUSE_LEAVE: "onmouseleave",
|
|
50
|
-
NEVER: "never"
|
|
50
|
+
NEVER: "never",
|
|
51
|
+
DISABLED: "disabled"
|
|
51
52
|
};
|
|
52
53
|
|
|
53
54
|
// Default dataset to use when none is provided
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useHoverState = void 0;
|
|
8
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
|
+
var _react = require("react");
|
|
10
|
+
/**
|
|
11
|
+
* Custom hook to manage menu hover state using path-based tracking.
|
|
12
|
+
*
|
|
13
|
+
* Uses string paths (e.g., "0", "0-0", "1-0") instead of node objects to avoid
|
|
14
|
+
* reference equality issues. Each menu item gets a unique, stable path identifier.
|
|
15
|
+
*
|
|
16
|
+
* The submenu stays open because:
|
|
17
|
+
* 1. Parent item has hover handlers
|
|
18
|
+
* 2. Submenu container ALSO has hover handlers for the SAME parent path
|
|
19
|
+
* 3. When mouse moves from parent to submenu, the submenu's onMouseEnter
|
|
20
|
+
* re-adds the parent path before the visual update completes
|
|
21
|
+
*/
|
|
22
|
+
var useHoverState = exports.useHoverState = function useHoverState() {
|
|
23
|
+
// Track which menu paths are currently hovered using their string identifiers
|
|
24
|
+
var _useState = (0, _react.useState)(new Set()),
|
|
25
|
+
hoveredPaths = _useState[0],
|
|
26
|
+
setHoveredPaths = _useState[1];
|
|
27
|
+
|
|
28
|
+
// Add path to hover state when mouse enters a menu item or its submenu
|
|
29
|
+
var handlePathMouseEnter = (0, _react.useCallback)(function (path) {
|
|
30
|
+
setHoveredPaths(function (prev) {
|
|
31
|
+
return new Set([].concat((0, _toConsumableArray2["default"])(prev), [path]));
|
|
32
|
+
});
|
|
33
|
+
}, []);
|
|
34
|
+
|
|
35
|
+
// Remove path from hover state immediately when mouse leaves
|
|
36
|
+
var handlePathMouseLeave = (0, _react.useCallback)(function (path, _event) {
|
|
37
|
+
setHoveredPaths(function (prev) {
|
|
38
|
+
var newSet = new Set(prev);
|
|
39
|
+
newSet["delete"](path);
|
|
40
|
+
return newSet;
|
|
41
|
+
});
|
|
42
|
+
}, []);
|
|
43
|
+
return {
|
|
44
|
+
hoveredPaths: hoveredPaths,
|
|
45
|
+
handlePathMouseEnter: handlePathMouseEnter,
|
|
46
|
+
handlePathMouseLeave: handlePathMouseLeave
|
|
47
|
+
};
|
|
48
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useKeyboardMovements = void 0;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
var _react = require("react");
|
|
10
|
+
var _constants = require("../constants");
|
|
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; }
|
|
13
|
+
var useKeyboardMovements = exports.useKeyboardMovements = function useKeyboardMovements(menuposition) {
|
|
14
|
+
return (0, _react.useMemo)(function () {
|
|
15
|
+
switch (menuposition) {
|
|
16
|
+
case _constants.POSITION.UP_RIGHT:
|
|
17
|
+
return _objectSpread(_objectSpread({}, _constants.KEYBOARD_MOVEMENTS), {}, {
|
|
18
|
+
MOVE_UP: "DOWN-ARROW",
|
|
19
|
+
MOVE_DOWN: "UP-ARROW"
|
|
20
|
+
});
|
|
21
|
+
case _constants.POSITION.UP_LEFT:
|
|
22
|
+
return _objectSpread(_objectSpread({}, _constants.KEYBOARD_MOVEMENTS), {}, {
|
|
23
|
+
MOVE_UP: "DOWN-ARROW",
|
|
24
|
+
MOVE_DOWN: "UP-ARROW",
|
|
25
|
+
MOVE_LEFT: "RIGHT-ARROW",
|
|
26
|
+
MOVE_RIGHT: "LEFT-ARROW"
|
|
27
|
+
});
|
|
28
|
+
case _constants.POSITION.DOWN_LEFT:
|
|
29
|
+
return _objectSpread(_objectSpread({}, _constants.KEYBOARD_MOVEMENTS), {}, {
|
|
30
|
+
MOVE_LEFT: "RIGHT-ARROW",
|
|
31
|
+
MOVE_RIGHT: "LEFT-ARROW"
|
|
32
|
+
});
|
|
33
|
+
default:
|
|
34
|
+
return _constants.KEYBOARD_MOVEMENTS;
|
|
35
|
+
}
|
|
36
|
+
}, [menuposition]);
|
|
37
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useTransformedDataset = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _constants = require("../constants");
|
|
9
|
+
var _transformedDatasetUtils = require("@wavemaker/react-runtime/utils/transformedDataset-utils");
|
|
10
|
+
var useTransformedDataset = exports.useTransformedDataset = function useTransformedDataset(dataset, itemlabel, orderby, itemchildren, dataPath) {
|
|
11
|
+
return (0, _react.useMemo)(function () {
|
|
12
|
+
if (!dataset) return _constants.DEFAULT_DATASET;
|
|
13
|
+
return (0, _transformedDatasetUtils.transformDataset)(dataset, undefined, itemlabel, undefined, undefined, orderby, null, dataPath, itemchildren);
|
|
14
|
+
}, [dataset, itemlabel, orderby]);
|
|
15
|
+
};
|