@reltio/components 1.4.2302-hotfix.0 → 1.4.2312
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/DropDownMenuButton/DropDownMenuButton.d.ts +28 -8
- package/DropDownMenuButton/DropDownMenuButton.js +89 -30
- package/DropDownMenuButton/DropDownMenuButton.module.css.js +9 -0
- package/DropDownMenuButton/index.d.ts +12 -1
- package/DropDownMenuButton/index.js +47 -1
- package/DropDownMenuButton/legacy/DropDownMenuButton.d.ts +16 -0
- package/DropDownMenuButton/legacy/DropDownMenuButton.js +59 -0
- package/DropDownMenuButton/{DropDownMenuButton.spec.js → legacy/DropDownMenuButton.spec.js} +1 -1
- package/RelationEditor/RelationEditor.js +7 -9
- package/RelationEditor/RelationEditor.module.css.js +9 -0
- package/VerificationButton/VerificationButton.js +3 -2
- package/cjs/DropDownMenuButton/DropDownMenuButton.d.ts +28 -8
- package/cjs/DropDownMenuButton/DropDownMenuButton.js +90 -28
- package/cjs/DropDownMenuButton/DropDownMenuButton.module.css.js +9 -0
- package/cjs/DropDownMenuButton/index.d.ts +12 -1
- package/cjs/DropDownMenuButton/index.js +50 -2
- package/cjs/DropDownMenuButton/legacy/DropDownMenuButton.d.ts +16 -0
- package/cjs/DropDownMenuButton/legacy/DropDownMenuButton.js +88 -0
- package/cjs/DropDownMenuButton/{DropDownMenuButton.spec.js → legacy/DropDownMenuButton.spec.js} +1 -1
- package/cjs/RelationEditor/RelationEditor.js +11 -13
- package/cjs/RelationEditor/RelationEditor.module.css.js +9 -0
- package/cjs/VerificationButton/VerificationButton.js +3 -2
- package/cjs/contexts/DesignMigrationContext/index.d.ts +8 -0
- package/cjs/contexts/DesignMigrationContext/index.js +35 -0
- package/cjs/features/crosswalks/CrosswalkDateEditor/CrosswalkDateEditor.test.js +4 -5
- package/cjs/features/history/ProfileBandHistory/ProfileBandHistory.js +6 -8
- package/cjs/features/history/ProfileBandHistory/ProfileBandHistory.module.css.js +9 -0
- package/cjs/features/history/ProfileBandHistory/index.d.ts +2 -1
- package/cjs/features/history/ProfileBandHistory/index.js +12 -2
- package/cjs/features/history/ProfileBandHistory/legacy/ProfileBandHistory.d.ts +2 -0
- package/cjs/features/history/ProfileBandHistory/legacy/ProfileBandHistory.js +24 -0
- package/cjs/features/history/ProfileBandHistory/{ProfileBandHistory.test.js → legacy/ProfileBandHistory.test.js} +1 -1
- package/cjs/features/workflow/AddWorkflowButton/AddWorkflowButton.js +4 -7
- package/cjs/features/workflow/AddWorkflowButton/AddWorkflowButton.module.css.js +9 -0
- package/cjs/helpers/errors.js +3 -0
- package/cjs/helpers/errors.test.js +4 -0
- package/cjs/hooks/useReadableSearchState/useReadableSearchState.js +6 -0
- package/cjs/hooks/useReadableSearchState/useReadableSearchState.test.js +30 -2
- package/contexts/DesignMigrationContext/index.d.ts +8 -0
- package/contexts/DesignMigrationContext/index.js +7 -0
- package/features/crosswalks/CrosswalkDateEditor/CrosswalkDateEditor.test.js +4 -5
- package/features/history/HistoryRow/styles.d.ts +1 -1
- package/features/history/ProfileBandHistory/ProfileBandHistory.js +4 -6
- package/features/history/ProfileBandHistory/ProfileBandHistory.module.css.js +9 -0
- package/features/history/ProfileBandHistory/index.d.ts +2 -1
- package/features/history/ProfileBandHistory/index.js +8 -1
- package/features/history/ProfileBandHistory/legacy/ProfileBandHistory.d.ts +2 -0
- package/features/history/ProfileBandHistory/legacy/ProfileBandHistory.js +17 -0
- package/features/history/ProfileBandHistory/{ProfileBandHistory.test.js → legacy/ProfileBandHistory.test.js} +1 -1
- package/features/workflow/AddWorkflowButton/AddWorkflowButton.js +4 -7
- package/features/workflow/AddWorkflowButton/AddWorkflowButton.module.css.js +9 -0
- package/helpers/errors.js +4 -1
- package/helpers/errors.test.js +4 -0
- package/hooks/useReadableSearchState/useReadableSearchState.js +6 -0
- package/hooks/useReadableSearchState/useReadableSearchState.test.js +30 -2
- package/package.json +3 -3
- package/RelationEditor/styles.d.ts +0 -1
- package/RelationEditor/styles.js +0 -34
- package/cjs/RelationEditor/styles.d.ts +0 -1
- package/cjs/RelationEditor/styles.js +0 -37
- package/cjs/features/workflow/AddWorkflowButton/styles.d.ts +0 -1
- package/cjs/features/workflow/AddWorkflowButton/styles.js +0 -20
- package/features/workflow/AddWorkflowButton/styles.d.ts +0 -1
- package/features/workflow/AddWorkflowButton/styles.js +0 -17
- /package/DropDownMenuButton/{components → legacy}/DefaultMenuItemRenderer/DefaultMenuItemRenderer.d.ts +0 -0
- /package/DropDownMenuButton/{components → legacy}/DefaultMenuItemRenderer/DefaultMenuItemRenderer.js +0 -0
- /package/DropDownMenuButton/{components → legacy}/DefaultMenuItemRenderer/index.d.ts +0 -0
- /package/DropDownMenuButton/{components → legacy}/DefaultMenuItemRenderer/index.js +0 -0
- /package/DropDownMenuButton/{components → legacy}/DefaultMenuItemRenderer/styles.d.ts +0 -0
- /package/DropDownMenuButton/{components → legacy}/DefaultMenuItemRenderer/styles.js +0 -0
- /package/DropDownMenuButton/{DropDownMenuButton.spec.d.ts → legacy/DropDownMenuButton.spec.d.ts} +0 -0
- /package/DropDownMenuButton/{styles.d.ts → legacy/styles.d.ts} +0 -0
- /package/DropDownMenuButton/{styles.js → legacy/styles.js} +0 -0
- /package/cjs/DropDownMenuButton/{components → legacy}/DefaultMenuItemRenderer/DefaultMenuItemRenderer.d.ts +0 -0
- /package/cjs/DropDownMenuButton/{components → legacy}/DefaultMenuItemRenderer/DefaultMenuItemRenderer.js +0 -0
- /package/cjs/DropDownMenuButton/{components → legacy}/DefaultMenuItemRenderer/index.d.ts +0 -0
- /package/cjs/DropDownMenuButton/{components → legacy}/DefaultMenuItemRenderer/index.js +0 -0
- /package/cjs/DropDownMenuButton/{components → legacy}/DefaultMenuItemRenderer/styles.d.ts +0 -0
- /package/cjs/DropDownMenuButton/{components → legacy}/DefaultMenuItemRenderer/styles.js +0 -0
- /package/cjs/DropDownMenuButton/{DropDownMenuButton.spec.d.ts → legacy/DropDownMenuButton.spec.d.ts} +0 -0
- /package/cjs/DropDownMenuButton/{styles.d.ts → legacy/styles.d.ts} +0 -0
- /package/cjs/DropDownMenuButton/{styles.js → legacy/styles.js} +0 -0
- /package/cjs/features/history/ProfileBandHistory/{ProfileBandHistory.test.d.ts → legacy/ProfileBandHistory.test.d.ts} +0 -0
- /package/cjs/features/history/ProfileBandHistory/{styles.d.ts → legacy/styles.d.ts} +0 -0
- /package/cjs/features/history/ProfileBandHistory/{styles.js → legacy/styles.js} +0 -0
- /package/features/history/ProfileBandHistory/{ProfileBandHistory.test.d.ts → legacy/ProfileBandHistory.test.d.ts} +0 -0
- /package/features/history/ProfileBandHistory/{styles.d.ts → legacy/styles.d.ts} +0 -0
- /package/features/history/ProfileBandHistory/{styles.js → legacy/styles.js} +0 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const styles = {"open":"DropDownMenuButton-open--2Amub"};
|
|
2
|
+
if (typeof document !== 'undefined') {
|
|
3
|
+
const head = document.head || document.getElementsByTagName('head')[0]
|
|
4
|
+
const style = document.createElement('style');
|
|
5
|
+
style.type = 'text/css'
|
|
6
|
+
style.innerHTML = `.DropDownMenuButton-open--2Amub{--sapButton_Lite_Background:var(--sapButton_Selected_Background);--sapButton_Lite_BorderColor:var(--sapButton_Selected_BorderColor);--sapButton_Lite_TextColor:var(--sapButton_Selected_TextColor);--sapButton_Lite_Hover_Background:var(--sapButton_Selected_Hover_Background);--sapButton_Lite_Hover_BorderColor:var(--sapButton_Selected_Hover_BorderColor);--sapButton_Lite_Hover_TextColor:var(--sapButton_Selected_TextColor);--sapButton_Background:var(--sapButton_Selected_Background);--sapButton_BorderColor:var(--sapButton_Selected_BorderColor);--sapButton_TextColor:var(--sapButton_Selected_TextColor);--sapButton_Hover_Background:var(--sapButton_Selected_Hover_Background);--sapButton_Hover_BorderColor:var(--sapButton_Selected_Hover_BorderColor);--sapButton_Hover_TextColor:var(--sapButton_Selected_TextColor)}`;
|
|
7
|
+
head.appendChild(style);
|
|
8
|
+
}
|
|
9
|
+
module.exports = styles;
|
|
@@ -1 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { DropDownMenuItem as LegacyDropDownMenuItem } from '../types';
|
|
3
|
+
import { DropDownMenuButtonProps as LegacyProps } from './legacy/DropDownMenuButton';
|
|
4
|
+
export type { DropDownMenuGroup, DropDownMenuItem, DropDownMenuNode, DropDownMenuSeparator } from './DropDownMenuButton';
|
|
5
|
+
/**
|
|
6
|
+
* The legacy contract plus what only the design rendering understands. `horizontalAlign` has no
|
|
7
|
+
* legacy counterpart, so it does nothing until the call site routes to the design implementation.
|
|
8
|
+
*/
|
|
9
|
+
type DropDownMenuButtonProps<T> = LegacyProps<T> & {
|
|
10
|
+
horizontalAlign?: 'Start' | 'Center' | 'End';
|
|
11
|
+
};
|
|
12
|
+
export declare function DropDownMenuButton<T = LegacyDropDownMenuItem>(props: DropDownMenuButtonProps<T>): React.JSX.Element;
|
|
@@ -1,5 +1,53 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DropDownMenuButton =
|
|
17
|
+
exports.DropDownMenuButton = DropDownMenuButton;
|
|
18
|
+
var react_1 = __importDefault(require("react"));
|
|
19
|
+
var DesignMigrationContext_1 = require("../contexts/DesignMigrationContext");
|
|
4
20
|
var DropDownMenuButton_1 = require("./DropDownMenuButton");
|
|
5
|
-
|
|
21
|
+
var DropDownMenuButton_2 = require("./legacy/DropDownMenuButton");
|
|
22
|
+
var isRenderableByDesign = function (nodes) {
|
|
23
|
+
if (nodes === void 0) { nodes = []; }
|
|
24
|
+
return nodes.every(function (node) {
|
|
25
|
+
if ((0, DropDownMenuButton_1.isSeparatorNode)(node)) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
if ((0, DropDownMenuButton_1.isGroupNode)(node)) {
|
|
29
|
+
return isRenderableByDesign(node.items);
|
|
30
|
+
}
|
|
31
|
+
return (
|
|
32
|
+
// Legacy sugar for a checkbox. The design rendering wants an explicit group instead,
|
|
33
|
+
// because in UI5 being checkable is a trait of the group rather than of the item.
|
|
34
|
+
!node.selectable &&
|
|
35
|
+
// A React component icon means an unmigrated call site: UI5 takes SAP icon names.
|
|
36
|
+
(node.icon === undefined || typeof node.icon === 'string') &&
|
|
37
|
+
isRenderableByDesign(node.items));
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* A UI5 menu only takes UI5 `MenuItem`s, so call sites rendering their own MUI items or tuning the
|
|
42
|
+
* MUI popover keep the legacy rendering even inside a migrated screen.
|
|
43
|
+
*/
|
|
44
|
+
var isSupportedByDesign = function (_a) {
|
|
45
|
+
var MenuItemRenderer = _a.MenuItemRenderer, popoverProps = _a.popoverProps, menuItems = _a.menuItems;
|
|
46
|
+
return !MenuItemRenderer && !popoverProps && isRenderableByDesign(menuItems);
|
|
47
|
+
};
|
|
48
|
+
function DropDownMenuButton(props) {
|
|
49
|
+
if ((0, DesignMigrationContext_1.useDesignMigration)() && isSupportedByDesign(props)) {
|
|
50
|
+
return react_1.default.createElement(DropDownMenuButton_1.DropDownMenuButton, __assign({}, props, { menuItems: props.menuItems }));
|
|
51
|
+
}
|
|
52
|
+
return react_1.default.createElement(DropDownMenuButton_2.DropDownMenuButton, __assign({}, props));
|
|
53
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { MenuProps } from '@mui/material/Menu';
|
|
3
|
+
import { DropDownMenuItem } from '../../types';
|
|
4
|
+
export type DropDownMenuButtonProps<T> = {
|
|
5
|
+
className?: string;
|
|
6
|
+
buttonComponent?: React.ElementType;
|
|
7
|
+
buttonContent?: React.ReactNode;
|
|
8
|
+
menuItems?: T[];
|
|
9
|
+
buttonProps?: Record<string, unknown>;
|
|
10
|
+
popoverProps?: Omit<MenuProps, 'open'>;
|
|
11
|
+
menuId: string;
|
|
12
|
+
onMenuOpen?: () => void;
|
|
13
|
+
onMenuClose?: () => void;
|
|
14
|
+
MenuItemRenderer?: (props: any) => React.ReactNode;
|
|
15
|
+
};
|
|
16
|
+
export declare function DropDownMenuButton<T = DropDownMenuItem>({ className, menuId, buttonComponent, buttonContent, menuItems, buttonProps, popoverProps, onMenuOpen, onMenuClose, MenuItemRenderer }: DropDownMenuButtonProps<T>): React.JSX.Element;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.DropDownMenuButton = DropDownMenuButton;
|
|
41
|
+
var react_1 = __importStar(require("react"));
|
|
42
|
+
var classnames_1 = __importDefault(require("classnames"));
|
|
43
|
+
var ramda_1 = require("ramda");
|
|
44
|
+
var Button_1 = __importDefault(require("@mui/material/Button"));
|
|
45
|
+
var Menu_1 = __importDefault(require("@mui/material/Menu"));
|
|
46
|
+
var DefaultMenuItemRenderer_1 = require("./DefaultMenuItemRenderer");
|
|
47
|
+
var useDidUpdateEffect_1 = require("../../hooks/useDidUpdateEffect");
|
|
48
|
+
var styles_1 = require("./styles");
|
|
49
|
+
var EMPTY_ARRAY = [];
|
|
50
|
+
var EMPTY_OBJECT = {};
|
|
51
|
+
function DropDownMenuButton(_a) {
|
|
52
|
+
var _b;
|
|
53
|
+
var className = _a.className, menuId = _a.menuId, _c = _a.buttonComponent, buttonComponent = _c === void 0 ? Button_1.default : _c, buttonContent = _a.buttonContent, _d = _a.menuItems, menuItems = _d === void 0 ? EMPTY_ARRAY : _d, _e = _a.buttonProps, buttonProps = _e === void 0 ? EMPTY_OBJECT : _e, _f = _a.popoverProps, popoverProps = _f === void 0 ? EMPTY_OBJECT : _f, _g = _a.onMenuOpen, onMenuOpen = _g === void 0 ? ramda_1.identity : _g, _h = _a.onMenuClose, onMenuClose = _h === void 0 ? ramda_1.identity : _h, _j = _a.MenuItemRenderer, MenuItemRenderer = _j === void 0 ? DefaultMenuItemRenderer_1.DefaultMenuItemRenderer : _j;
|
|
54
|
+
var ButtonComponent = buttonComponent;
|
|
55
|
+
var styles = (0, styles_1.useStyles)();
|
|
56
|
+
var buttonRef = (0, react_1.useRef)(null);
|
|
57
|
+
var _k = (0, react_1.useState)(false), isOpen = _k[0], setIsOpen = _k[1];
|
|
58
|
+
// onMenuOpen is fired synchronously in the click handler (below) so it wins the race against a
|
|
59
|
+
// parent's onMouseLeave when the button lives in an unmounting hover overlay; onMenuClose stays
|
|
60
|
+
// deferred to this effect so consumers can keep the button mounted (e.g. delete confirmation).
|
|
61
|
+
(0, useDidUpdateEffect_1.useDidUpdateEffect)(function () {
|
|
62
|
+
if (!isOpen) {
|
|
63
|
+
onMenuClose();
|
|
64
|
+
}
|
|
65
|
+
}, [isOpen]);
|
|
66
|
+
var handleToggle = (0, react_1.useCallback)(function (e) {
|
|
67
|
+
e === null || e === void 0 ? void 0 : e.stopPropagation();
|
|
68
|
+
var nextIsOpen = !isOpen;
|
|
69
|
+
setIsOpen(nextIsOpen);
|
|
70
|
+
if (nextIsOpen) {
|
|
71
|
+
onMenuOpen();
|
|
72
|
+
}
|
|
73
|
+
}, [isOpen, onMenuOpen]);
|
|
74
|
+
var renderMenuItem = function (item, index) {
|
|
75
|
+
return react_1.default.createElement(MenuItemRenderer, { item: item, key: index, onMenuClose: handleToggle });
|
|
76
|
+
};
|
|
77
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
78
|
+
react_1.default.createElement(ButtonComponent, __assign({ "data-reltio-id": "drop-down-menu-button", ref: buttonRef, className: (0, classnames_1.default)(styles.buttonRoot, (_b = {},
|
|
79
|
+
_b[styles.selected] = isOpen,
|
|
80
|
+
_b), className), onClick: handleToggle, "aria-pressed": isOpen, "aria-controls": isOpen ? menuId : undefined, "aria-haspopup": "true" }, buttonProps), buttonContent),
|
|
81
|
+
react_1.default.createElement(Menu_1.default, __assign({ id: menuId, variant: "menu", open: isOpen, autoFocus: false, classes: { paper: styles.paper }, anchorEl: buttonRef.current, onClose: handleToggle, anchorOrigin: {
|
|
82
|
+
vertical: 'bottom',
|
|
83
|
+
horizontal: 'right'
|
|
84
|
+
}, transformOrigin: {
|
|
85
|
+
vertical: 'top',
|
|
86
|
+
horizontal: 'right'
|
|
87
|
+
}, elevation: 2, MenuListProps: { autoFocusItem: isOpen } }, popoverProps), menuItems.map(renderMenuItem))));
|
|
88
|
+
}
|
package/cjs/DropDownMenuButton/{DropDownMenuButton.spec.js → legacy/DropDownMenuButton.spec.js}
RENAMED
|
@@ -64,7 +64,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
64
64
|
var react_1 = __importDefault(require("react"));
|
|
65
65
|
var react_2 = require("@testing-library/react");
|
|
66
66
|
var user_event_1 = __importDefault(require("@testing-library/user-event"));
|
|
67
|
-
var DropDownMenuButton_1 = require("
|
|
67
|
+
var DropDownMenuButton_1 = require("./DropDownMenuButton");
|
|
68
68
|
var menuItems = [
|
|
69
69
|
{ text: 'Disabled custom action', disabled: true, tooltip: 'Disabled custom tooltip', onClick: jest.fn() },
|
|
70
70
|
{ text: 'Custom action', disabled: false, tooltip: 'Custom tooltip', onClick: jest.fn() }
|
|
@@ -41,8 +41,7 @@ var react_1 = __importStar(require("react"));
|
|
|
41
41
|
var ui_i18n_1 = __importDefault(require("ui-i18n"));
|
|
42
42
|
var classnames_1 = __importDefault(require("classnames"));
|
|
43
43
|
var ramda_1 = require("ramda");
|
|
44
|
-
var
|
|
45
|
-
var Typography_1 = __importDefault(require("@mui/material/Typography"));
|
|
44
|
+
var components_1 = require("@reltio/design/components");
|
|
46
45
|
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
47
46
|
var ConnectionRelationTypeSelector_1 = require("../ConnectionRelationTypeSelector");
|
|
48
47
|
var ErrorWrapper_1 = require("../ErrorWrapper");
|
|
@@ -55,7 +54,7 @@ var MdmModuleContext_1 = require("../contexts/MdmModuleContext");
|
|
|
55
54
|
var HiddenAttributesContext_1 = require("../contexts/HiddenAttributesContext");
|
|
56
55
|
var AutoCompleteContext_1 = require("../contexts/AutoCompleteContext");
|
|
57
56
|
var useScrollToAttributeError_1 = require("../hooks/useScrollToAttributeError");
|
|
58
|
-
var
|
|
57
|
+
var RelationEditor_module_css_1 = __importDefault(require("./RelationEditor.module.css"));
|
|
59
58
|
var areRelatedEntitiesChanged = function (initial, actual) {
|
|
60
59
|
return initial.length !== actual.length || initial.some(function (_, i) { return initial[i] !== actual[i]; });
|
|
61
60
|
};
|
|
@@ -64,7 +63,6 @@ var RelationEditor = function (_a) {
|
|
|
64
63
|
var _b;
|
|
65
64
|
var _c, _d;
|
|
66
65
|
var connection = _a.connection, config = _a.config, mode = _a.mode, metadata = _a.metadata, highlightedError = _a.highlightedError;
|
|
67
|
-
var styles = (0, styles_1.useStyles)();
|
|
68
66
|
var _e = connection.relation, relationType = _e.relationType, direction = _e.direction;
|
|
69
67
|
var isNew = connection.isNew;
|
|
70
68
|
var entityUri = (0, mdm_sdk_1.getEntityUriFromConnection)(connection);
|
|
@@ -254,22 +252,22 @@ var RelationEditor = function (_a) {
|
|
|
254
252
|
var isEntityHasMaskedAttrValue = (0, ramda_1.pipe)(ramda_1.values, ramda_1.flatten, (0, ramda_1.any)(mdm_sdk_1.isAttributeHasMaskedValue))(((_d = (_c = connection.entity) === null || _c === void 0 ? void 0 : _c.object) === null || _d === void 0 ? void 0 : _d.attributes) || {});
|
|
255
253
|
var isMasked = showMasking && isEntityHasMaskedAttrValue;
|
|
256
254
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
257
|
-
react_1.default.createElement("div", { className:
|
|
258
|
-
react_1.default.createElement(
|
|
259
|
-
defaultRelationType === null && (react_1.default.createElement(ConnectionRelationTypeSelector_1.ConnectionRelationTypeSelector, { className:
|
|
255
|
+
react_1.default.createElement("div", { className: RelationEditor_module_css_1.default.editor },
|
|
256
|
+
react_1.default.createElement(components_1.Text, { className: RelationEditor_module_css_1.default.title }, isNew ? ui_i18n_1.default.text('Add new item') : ui_i18n_1.default.text('Edit item')),
|
|
257
|
+
defaultRelationType === null && (react_1.default.createElement(ConnectionRelationTypeSelector_1.ConnectionRelationTypeSelector, { className: RelationEditor_module_css_1.default.item, relation: connection.relation, inRelationTypes: inRelationTypes, outRelationTypes: outRelationTypes, onChange: onRelationTypeChange })),
|
|
260
258
|
Boolean(relationType) && (react_1.default.createElement(ConfigPermissionsContext_1.ConfigPermissionsContextProvider, null,
|
|
261
259
|
react_1.default.createElement("div", { ref: ref, className: errorClassName },
|
|
262
260
|
react_1.default.createElement(ErrorWrapper_1.ErrorWrapper, { errorMessage: errorMessage },
|
|
263
261
|
react_1.default.createElement(AutoCompleteContext_1.AddressAutoCompleteProvider, { entityUri: entityUri },
|
|
264
|
-
react_1.default.createElement(EntitySelector_1.EntitySelector, { className: (0, classnames_1.default)(
|
|
265
|
-
_b[
|
|
262
|
+
react_1.default.createElement(EntitySelector_1.EntitySelector, { className: (0, classnames_1.default)(RelationEditor_module_css_1.default.item, (_b = {},
|
|
263
|
+
_b[RelationEditor_module_css_1.default.dense] = errorMessage ||
|
|
266
264
|
(connection.entity && (0, mdm_sdk_1.isTempUri)(connection.entity.entityUri)),
|
|
267
265
|
_b)), entity: connection.entity || {}, entityTypesUris: entityTypesUris, globalSearchRequestOptions: globalSearchRequestOptions, mode: mode, onChange: onChangeEntity, onCreate: canCreateNewEntity ? onCreateEntity : undefined, metadata: metadata, attributeTypesSelectionStrategy: mdm_sdk_1.relationEditorAttributeTypesSelectionStrategy, isMasked: isMasked })))),
|
|
268
266
|
react_1.default.createElement(HiddenAttributesContext_1.HiddenAttributesContext.Provider, { value: emptyHiddenAttributes },
|
|
269
|
-
react_1.default.createElement(EditModeAttributesList_1.EditModeAttributesList, { className:
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
267
|
+
react_1.default.createElement(EditModeAttributesList_1.EditModeAttributesList, { className: RelationEditor_module_css_1.default.item, attrTypes: firstLevelRelationAttrTypes, entity: attributeListEntity, showEmptyEditors: true, mode: mode, parentUri: relationUri, onAddAttributes: onAddAttributes, onChangeAttribute: onChangeAttribute, onDeleteAttribute: onDeleteAttribute })))),
|
|
268
|
+
react_1.default.createElement("div", { className: RelationEditor_module_css_1.default.actionButtons },
|
|
269
|
+
react_1.default.createElement(components_1.Button, { design: "Transparent", onClick: onCancel }, ui_i18n_1.default.text('Cancel')),
|
|
270
|
+
react_1.default.createElement(components_1.Button, { design: "Emphasized", disabled: !hasChanges, onClick: onApply }, ui_i18n_1.default.text('Apply'))))));
|
|
273
271
|
};
|
|
274
272
|
exports.default = (0, withContext_1.withContext)(ScrollToElementContext_1.ScrollToElementContext, function (contextValue, _a) {
|
|
275
273
|
var connection = _a.connection;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const styles = {"editor":"RelationEditor-editor--ajWNL","title":"RelationEditor-title--rOGsW","item":"RelationEditor-item--vYyXo","dense":"RelationEditor-dense---NXeF","actionButtons":"RelationEditor-actionButtons--1LeIZ"};
|
|
2
|
+
if (typeof document !== 'undefined') {
|
|
3
|
+
const head = document.head || document.getElementsByTagName('head')[0]
|
|
4
|
+
const style = document.createElement('style');
|
|
5
|
+
style.type = 'text/css'
|
|
6
|
+
style.innerHTML = `.RelationEditor-editor--ajWNL{display:flex;flex-direction:column;overflow-x:hidden;padding:0 24px 16px}.RelationEditor-title--rOGsW{font-size:16px;margin:17px 0 24px}.RelationEditor-item--vYyXo{margin-bottom:20px}.RelationEditor-dense---NXeF{margin-bottom:0}.RelationEditor-actionButtons--1LeIZ{display:flex;gap:8px;justify-content:flex-end}`;
|
|
7
|
+
head.appendChild(style);
|
|
8
|
+
}
|
|
9
|
+
module.exports = styles;
|
|
@@ -110,12 +110,13 @@ var VerificationButton = function (_a) {
|
|
|
110
110
|
var verificationAttributeTypeUris = (0, react_context_selector_1.useContextSelector)(AttributesVerificationContext_1.AttributesVerificationContext, function (context) { return context.verificationAttributeTypeUris; });
|
|
111
111
|
var options = (0, react_1.useMemo)(function () {
|
|
112
112
|
if ((0, ramda_1.isNil)(attributeType))
|
|
113
|
-
return {};
|
|
113
|
+
return { forceVerify: true };
|
|
114
114
|
var clientFilter = verificationType === mdm_sdk_1.InputVerificationAttribute.Email
|
|
115
115
|
? mdm_sdk_1.VerifyAttributesClientFilter.EmailVerifier
|
|
116
116
|
: mdm_sdk_1.VerifyAttributesClientFilter.PhoneVerifier;
|
|
117
117
|
return {
|
|
118
|
-
clientFilter: clientFilter
|
|
118
|
+
clientFilter: clientFilter,
|
|
119
|
+
forceVerify: true
|
|
119
120
|
};
|
|
120
121
|
}, [attributeType, verificationType]);
|
|
121
122
|
var verifySafePromise = (0, useSafePromise_1.useSafePromise)();
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
type Props = {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
enabled?: boolean;
|
|
5
|
+
};
|
|
6
|
+
export declare const DesignMigrationProvider: ({ children, enabled }: Props) => React.JSX.Element;
|
|
7
|
+
export declare const useDesignMigration: () => boolean;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.useDesignMigration = exports.DesignMigrationProvider = void 0;
|
|
27
|
+
var react_1 = __importStar(require("react"));
|
|
28
|
+
var DesignMigrationContext = (0, react_1.createContext)(false);
|
|
29
|
+
var DesignMigrationProvider = function (_a) {
|
|
30
|
+
var children = _a.children, _b = _a.enabled, enabled = _b === void 0 ? true : _b;
|
|
31
|
+
return (react_1.default.createElement(DesignMigrationContext.Provider, { value: enabled }, children));
|
|
32
|
+
};
|
|
33
|
+
exports.DesignMigrationProvider = DesignMigrationProvider;
|
|
34
|
+
var useDesignMigration = function () { return (0, react_1.useContext)(DesignMigrationContext); };
|
|
35
|
+
exports.useDesignMigration = useDesignMigration;
|
|
@@ -112,15 +112,14 @@ describe('CrosswalkDateEditor tests', function () {
|
|
|
112
112
|
switch (_a.label) {
|
|
113
113
|
case 0:
|
|
114
114
|
user = setUp().user;
|
|
115
|
-
newDate = '10/10/2021';
|
|
116
|
-
return [4 /*yield*/, user.
|
|
115
|
+
newDate = '10/10/2021 01:01:00 AM';
|
|
116
|
+
return [4 /*yield*/, user.clear(react_2.screen.getByRole('textbox'))];
|
|
117
117
|
case 1:
|
|
118
118
|
_a.sent();
|
|
119
|
-
|
|
120
|
-
return [4 /*yield*/, user.type(react_2.screen.getByRole('textbox'), newDate)];
|
|
119
|
+
return [4 /*yield*/, user.type(react_2.screen.getByRole('textbox'), newDate, { skipClick: true })];
|
|
121
120
|
case 2:
|
|
122
121
|
_a.sent();
|
|
123
|
-
expect(react_2.screen.getByDisplayValue(
|
|
122
|
+
expect(react_2.screen.getByDisplayValue(newDate)).toBeInTheDocument();
|
|
124
123
|
expect(defaultProps.onChange).not.toHaveBeenCalled();
|
|
125
124
|
return [4 /*yield*/, user.tab()];
|
|
126
125
|
case 3:
|
|
@@ -6,19 +6,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.ProfileBandHistory = void 0;
|
|
7
7
|
var react_1 = __importDefault(require("react"));
|
|
8
8
|
var ui_i18n_1 = __importDefault(require("ui-i18n"));
|
|
9
|
-
var
|
|
10
|
-
var Typography_1 = __importDefault(require("@mui/material/Typography"));
|
|
9
|
+
var components_1 = require("@reltio/design/components");
|
|
11
10
|
var MdmModuleContext_1 = require("../../../contexts/MdmModuleContext");
|
|
12
|
-
var
|
|
11
|
+
var ProfileBandHistory_module_css_1 = __importDefault(require("./ProfileBandHistory.module.css"));
|
|
13
12
|
var ProfileBandHistory = function () {
|
|
14
|
-
var styles = (0, styles_1.useStyles)();
|
|
15
13
|
var clearHistoryEvent = (0, MdmModuleContext_1.useMdmAction)('clearHistoryEvent');
|
|
16
14
|
var historyEvent = (0, MdmModuleContext_1.useMdmHistoryEvent)();
|
|
17
|
-
return historyEvent ? (react_1.default.createElement("div", { className:
|
|
18
|
-
react_1.default.createElement(
|
|
15
|
+
return historyEvent ? (react_1.default.createElement("div", { className: ProfileBandHistory_module_css_1.default.root },
|
|
16
|
+
react_1.default.createElement(components_1.Text, { className: ProfileBandHistory_module_css_1.default.message },
|
|
19
17
|
ui_i18n_1.default.text('You are viewing a historic slice:'),
|
|
20
18
|
' ',
|
|
21
|
-
react_1.default.createElement("span", { className:
|
|
22
|
-
react_1.default.createElement(
|
|
19
|
+
react_1.default.createElement("span", { className: ProfileBandHistory_module_css_1.default.slice }, ui_i18n_1.default.date(historyEvent.aStamp, 'llll'))),
|
|
20
|
+
react_1.default.createElement(components_1.Button, { className: ProfileBandHistory_module_css_1.default.cancelButton, design: "Emphasized", onClick: clearHistoryEvent }, ui_i18n_1.default.text('Cancel')))) : null;
|
|
23
21
|
};
|
|
24
22
|
exports.ProfileBandHistory = ProfileBandHistory;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const styles = {"root":"ProfileBandHistory-root--YvxgP","message":"ProfileBandHistory-message--pXCjS","slice":"ProfileBandHistory-slice--o9Udc","cancelButton":"ProfileBandHistory-cancelButton--mPVRW"};
|
|
2
|
+
if (typeof document !== 'undefined') {
|
|
3
|
+
const head = document.head || document.getElementsByTagName('head')[0]
|
|
4
|
+
const style = document.createElement('style');
|
|
5
|
+
style.type = 'text/css'
|
|
6
|
+
style.innerHTML = `.ProfileBandHistory-root--YvxgP{align-items:flex-start;display:flex}.ProfileBandHistory-message--pXCjS{font-size:var(--sapFontLargeSize)}.ProfileBandHistory-slice--o9Udc{font-weight:600}.ProfileBandHistory-cancelButton--mPVRW{flex-shrink:0;margin-left:15px}`;
|
|
7
|
+
head.appendChild(style);
|
|
8
|
+
}
|
|
9
|
+
module.exports = styles;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare const ProfileBandHistory: () => React.JSX.Element;
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.ProfileBandHistory = void 0;
|
|
4
|
-
var
|
|
5
|
-
|
|
7
|
+
var react_1 = __importDefault(require("react"));
|
|
8
|
+
var DesignMigrationContext_1 = require("../../../contexts/DesignMigrationContext");
|
|
9
|
+
var ProfileBandHistory_1 = require("./legacy/ProfileBandHistory");
|
|
10
|
+
var ProfileBandHistory_2 = require("./ProfileBandHistory");
|
|
11
|
+
var ProfileBandHistory = function () {
|
|
12
|
+
var designMigrationEnabled = (0, DesignMigrationContext_1.useDesignMigration)();
|
|
13
|
+
return designMigrationEnabled ? react_1.default.createElement(ProfileBandHistory_2.ProfileBandHistory, null) : react_1.default.createElement(ProfileBandHistory_1.ProfileBandHistory, null);
|
|
14
|
+
};
|
|
15
|
+
exports.ProfileBandHistory = ProfileBandHistory;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ProfileBandHistory = void 0;
|
|
7
|
+
var react_1 = __importDefault(require("react"));
|
|
8
|
+
var ui_i18n_1 = __importDefault(require("ui-i18n"));
|
|
9
|
+
var Button_1 = __importDefault(require("@mui/material/Button"));
|
|
10
|
+
var Typography_1 = __importDefault(require("@mui/material/Typography"));
|
|
11
|
+
var MdmModuleContext_1 = require("../../../../contexts/MdmModuleContext");
|
|
12
|
+
var styles_1 = require("./styles");
|
|
13
|
+
var ProfileBandHistory = function () {
|
|
14
|
+
var styles = (0, styles_1.useStyles)();
|
|
15
|
+
var clearHistoryEvent = (0, MdmModuleContext_1.useMdmAction)('clearHistoryEvent');
|
|
16
|
+
var historyEvent = (0, MdmModuleContext_1.useMdmHistoryEvent)();
|
|
17
|
+
return historyEvent ? (react_1.default.createElement("div", { className: styles.root },
|
|
18
|
+
react_1.default.createElement(Typography_1.default, { component: 'div' },
|
|
19
|
+
ui_i18n_1.default.text('You are viewing a historic slice:'),
|
|
20
|
+
' ',
|
|
21
|
+
react_1.default.createElement("span", { className: styles.slice }, ui_i18n_1.default.date(historyEvent.aStamp, 'llll'))),
|
|
22
|
+
react_1.default.createElement(Button_1.default, { className: styles.cancelButton, variant: "contained", color: "primary", onClick: clearHistoryEvent }, ui_i18n_1.default.text('Cancel')))) : null;
|
|
23
|
+
};
|
|
24
|
+
exports.ProfileBandHistory = ProfileBandHistory;
|
|
@@ -54,7 +54,7 @@ var react_1 = __importDefault(require("react"));
|
|
|
54
54
|
var ui_i18n_1 = __importDefault(require("ui-i18n"));
|
|
55
55
|
var react_2 = require("@testing-library/react");
|
|
56
56
|
var user_event_1 = __importDefault(require("@testing-library/user-event"));
|
|
57
|
-
var MdmModuleContext_1 = require("
|
|
57
|
+
var MdmModuleContext_1 = require("../../../../contexts/MdmModuleContext");
|
|
58
58
|
var ProfileBandHistory_1 = require("./ProfileBandHistory");
|
|
59
59
|
var defaultHistoryEvent = { aStamp: 123 };
|
|
60
60
|
var clearHistoryEvent = jest.fn();
|
|
@@ -29,13 +29,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
29
29
|
exports.AddWorkflowButton = void 0;
|
|
30
30
|
var react_1 = __importStar(require("react"));
|
|
31
31
|
var ui_i18n_1 = __importDefault(require("ui-i18n"));
|
|
32
|
-
var
|
|
33
|
-
var
|
|
32
|
+
var components_1 = require("@reltio/design/components");
|
|
33
|
+
var add_1 = __importDefault(require("@reltio/design/icons/sap/add"));
|
|
34
34
|
var useWorkflowCheckPermission_1 = require("../hooks/useWorkflowCheckPermission");
|
|
35
35
|
var AddWorkflowDialog_1 = require("../AddWorkflowDialog");
|
|
36
|
-
var
|
|
36
|
+
var AddWorkflowButton_module_css_1 = __importDefault(require("./AddWorkflowButton.module.css"));
|
|
37
37
|
var AddWorkflowButton = function () {
|
|
38
|
-
var styles = (0, styles_1.useStyles)();
|
|
39
38
|
var _a = (0, react_1.useState)(null), anchorEl = _a[0], setAnchorEl = _a[1];
|
|
40
39
|
var checkWorkflowPermission = (0, useWorkflowCheckPermission_1.useWorkflowCheckPermission)();
|
|
41
40
|
var canStartProcess = checkWorkflowPermission('START_PROCESS_INSTANCE');
|
|
@@ -43,9 +42,7 @@ var AddWorkflowButton = function () {
|
|
|
43
42
|
var handleOpen = function (e) { return setAnchorEl(e.currentTarget); };
|
|
44
43
|
var handleClose = function () { return setAnchorEl(null); };
|
|
45
44
|
return canStartProcess && canViewProcessDefinitions ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
46
|
-
react_1.default.createElement(
|
|
47
|
-
react_1.default.createElement(Add_1.default, { className: styles.icon }),
|
|
48
|
-
react_1.default.createElement("div", { className: styles.buttonLabel }, ui_i18n_1.default.text('Add'))),
|
|
45
|
+
react_1.default.createElement(components_1.Button, { design: "Transparent", className: AddWorkflowButton_module_css_1.default.button, icon: add_1.default, onClick: handleOpen }, ui_i18n_1.default.text('Add')),
|
|
49
46
|
react_1.default.createElement(AddWorkflowDialog_1.AddWorkflowDialog, { anchorEl: anchorEl, onClose: handleClose }))) : null;
|
|
50
47
|
};
|
|
51
48
|
exports.AddWorkflowButton = AddWorkflowButton;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const styles = {"button":"AddWorkflowButton-button--5MCcn"};
|
|
2
|
+
if (typeof document !== 'undefined') {
|
|
3
|
+
const head = document.head || document.getElementsByTagName('head')[0]
|
|
4
|
+
const style = document.createElement('style');
|
|
5
|
+
style.type = 'text/css'
|
|
6
|
+
style.innerHTML = `.AddWorkflowButton-button--5MCcn{margin-left:auto;margin-right:8px}`;
|
|
7
|
+
head.appendChild(style);
|
|
8
|
+
}
|
|
9
|
+
module.exports = styles;
|
package/cjs/helpers/errors.js
CHANGED
|
@@ -8,6 +8,9 @@ var ui_i18n_1 = __importDefault(require("ui-i18n"));
|
|
|
8
8
|
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
9
9
|
var ErrorPopup_1 = require("../ErrorPopup");
|
|
10
10
|
var showErrorMessage = function (error, params) {
|
|
11
|
+
if ((0, mdm_sdk_1.isAbortError)(error)) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
11
14
|
var _a = params || {}, _b = _a.title, title = _b === void 0 ? ui_i18n_1.default.text('Error') : _b, message = _a.message, defaultMessage = _a.defaultMessage;
|
|
12
15
|
console.warn(error);
|
|
13
16
|
ErrorPopup_1.ErrorPopup.addError({
|
|
@@ -49,6 +49,10 @@ describe('showErrorMessage tests', function () {
|
|
|
49
49
|
message: 'Error message'
|
|
50
50
|
});
|
|
51
51
|
});
|
|
52
|
+
it('should not show ErrorPopup for abort errors', function () {
|
|
53
|
+
(0, errors_1.showErrorMessage)(Object.assign(new Error('The user aborted a request.'), { name: 'AbortError' }));
|
|
54
|
+
expect(ErrorPopup_1.ErrorPopup.addError).not.toHaveBeenCalled();
|
|
55
|
+
});
|
|
52
56
|
describe('showDefaultErrorMessage tests', function () {
|
|
53
57
|
it('should show default message if errorMessage is not provided', function () {
|
|
54
58
|
(0, errors_1.showDefaultErrorMessage)({
|
|
@@ -25,6 +25,12 @@ var useReadableSearchState = function (searchState) {
|
|
|
25
25
|
}), mdm_sdk_1.resolveLookupsList, (0, ramda_1.andThen)(lookupsListResolved))(unresolvedLookups);
|
|
26
26
|
}
|
|
27
27
|
}, [searchState]); // eslint-disable-line
|
|
28
|
+
if (!metadata) {
|
|
29
|
+
return {
|
|
30
|
+
readableQuery: [],
|
|
31
|
+
readableQueryString: ''
|
|
32
|
+
};
|
|
33
|
+
}
|
|
28
34
|
return {
|
|
29
35
|
readableQuery: (0, mdm_sdk_1.buildReadableQuery)(metadata, attributesPresentation, lookups, groups, keyword, map, formatOptions),
|
|
30
36
|
readableQueryString: (0, mdm_sdk_1.buildReadableQueryToString)(metadata, attributesPresentation, lookups, groups, keyword, map, formatOptions)
|
|
@@ -65,10 +65,11 @@ var attributesPresentation = {
|
|
|
65
65
|
};
|
|
66
66
|
var lookups = {};
|
|
67
67
|
var lookupsListResolved = jest.fn();
|
|
68
|
-
var setUp = function (searchState) {
|
|
68
|
+
var setUp = function (searchState, values) {
|
|
69
|
+
if (values === void 0) { values = { metadata: metadata, dataTenants: dataTenants, attributesPresentation: attributesPresentation, lookups: lookups }; }
|
|
69
70
|
var Providers = function (_a) {
|
|
70
71
|
var children = _a.children;
|
|
71
|
-
return (react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values:
|
|
72
|
+
return (react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: values, actions: { lookupsListResolved: lookupsListResolved } }, children));
|
|
72
73
|
};
|
|
73
74
|
return (0, react_2.renderHook)(useReadableSearchState_1.useReadableSearchState, { wrapper: Providers, initialProps: searchState });
|
|
74
75
|
};
|
|
@@ -146,4 +147,31 @@ describe('useReadableSearchState tests', function () {
|
|
|
146
147
|
}
|
|
147
148
|
});
|
|
148
149
|
}); });
|
|
150
|
+
it('should not build readable query if metadata is not loaded', function () {
|
|
151
|
+
var searchState = {
|
|
152
|
+
version: '2.0',
|
|
153
|
+
advanced: [
|
|
154
|
+
{
|
|
155
|
+
attributes: [
|
|
156
|
+
{
|
|
157
|
+
data: { fieldName: 'sourceSystems' },
|
|
158
|
+
operator: 'and',
|
|
159
|
+
filter: 'equals',
|
|
160
|
+
values: [['SupplierIntelligenceTesting']]
|
|
161
|
+
}
|
|
162
|
+
],
|
|
163
|
+
operator: 'or'
|
|
164
|
+
}
|
|
165
|
+
]
|
|
166
|
+
};
|
|
167
|
+
mdm_sdk_1.getGroupsFromSearchState.mockReturnValueOnce([]);
|
|
168
|
+
mdm_sdk_1.getUnresolvedLookupsListFromSearchGroups.mockReturnValueOnce([]);
|
|
169
|
+
var result = setUp(searchState, { dataTenants: dataTenants, attributesPresentation: attributesPresentation, lookups: lookups }).result;
|
|
170
|
+
expect(mdm_sdk_1.buildReadableQuery).not.toHaveBeenCalled();
|
|
171
|
+
expect(mdm_sdk_1.buildReadableQueryToString).not.toHaveBeenCalled();
|
|
172
|
+
expect(result.current).toEqual({
|
|
173
|
+
readableQuery: [],
|
|
174
|
+
readableQueryString: ''
|
|
175
|
+
});
|
|
176
|
+
});
|
|
149
177
|
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
type Props = {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
enabled?: boolean;
|
|
5
|
+
};
|
|
6
|
+
export declare const DesignMigrationProvider: ({ children, enabled }: Props) => React.JSX.Element;
|
|
7
|
+
export declare const useDesignMigration: () => boolean;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React, { createContext, useContext } from 'react';
|
|
2
|
+
var DesignMigrationContext = createContext(false);
|
|
3
|
+
export var DesignMigrationProvider = function (_a) {
|
|
4
|
+
var children = _a.children, _b = _a.enabled, enabled = _b === void 0 ? true : _b;
|
|
5
|
+
return (React.createElement(DesignMigrationContext.Provider, { value: enabled }, children));
|
|
6
|
+
};
|
|
7
|
+
export var useDesignMigration = function () { return useContext(DesignMigrationContext); };
|