@reltio/components 1.4.2215 → 1.4.2217
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/AttributeVerificationStatus/AttributeVerificationStatus.d.ts +8 -0
- package/AttributeVerificationStatus/AttributeVerificationStatus.js +22 -0
- package/AttributeVerificationStatus/AttributeVerificationStatus.module.css.js +9 -0
- package/AttributeVerificationStatus/helpers.d.ts +8 -0
- package/AttributeVerificationStatus/helpers.js +56 -0
- package/CollaborationButton/CollaborationButton.d.ts +4 -0
- package/CollaborationButton/CollaborationButton.js +12 -0
- package/CollaborationButton/CollaborationButton.module.css.js +9 -0
- package/CollaborationButton/index.d.ts +1 -0
- package/CollaborationButton/index.js +1 -0
- package/ProfileResizablePanes/ProfileResizablePanes.js +2 -1
- package/ProfileResizablePanes/ProfileResizablePanes.spec.js +3 -3
- package/ReadOnlyAttributesPager/components/MultiLineRenderer/MultiLineRenderer.js +8 -2
- package/ReadOnlyComplexAttribute/ReadOnlyComplexAttribute.js +10 -3
- package/ReadOnlyComplexAttribute/ReadOnlyComplexAttribute.module.css.js +9 -0
- package/VerificationButton/VerificationButton.d.ts +13 -0
- package/VerificationButton/VerificationButton.js +150 -0
- package/VerificationButton/VerificationButton.module.css.js +9 -0
- package/cjs/AttributeVerificationStatus/AttributeVerificationStatus.d.ts +8 -0
- package/cjs/AttributeVerificationStatus/AttributeVerificationStatus.js +52 -0
- package/cjs/AttributeVerificationStatus/AttributeVerificationStatus.module.css.js +9 -0
- package/cjs/AttributeVerificationStatus/helpers.d.ts +8 -0
- package/cjs/AttributeVerificationStatus/helpers.js +64 -0
- package/cjs/CollaborationButton/CollaborationButton.d.ts +4 -0
- package/cjs/CollaborationButton/CollaborationButton.js +19 -0
- package/cjs/CollaborationButton/CollaborationButton.module.css.js +9 -0
- package/cjs/CollaborationButton/index.d.ts +1 -0
- package/cjs/CollaborationButton/index.js +5 -0
- package/cjs/ProfileResizablePanes/ProfileResizablePanes.js +2 -1
- package/cjs/ProfileResizablePanes/ProfileResizablePanes.spec.js +3 -3
- package/cjs/ReadOnlyAttributesPager/components/MultiLineRenderer/MultiLineRenderer.js +7 -1
- package/cjs/ReadOnlyComplexAttribute/ReadOnlyComplexAttribute.js +15 -8
- package/cjs/ReadOnlyComplexAttribute/ReadOnlyComplexAttribute.module.css.js +9 -0
- package/cjs/VerificationButton/VerificationButton.d.ts +13 -0
- package/cjs/VerificationButton/VerificationButton.js +180 -0
- package/cjs/VerificationButton/VerificationButton.module.css.js +9 -0
- package/cjs/contexts/AttributesVerificationContext/helpers.d.ts +17 -0
- package/cjs/contexts/AttributesVerificationContext/helpers.js +137 -0
- package/cjs/contexts/AttributesVerificationContext/index.d.ts +19 -0
- package/cjs/contexts/AttributesVerificationContext/index.js +72 -0
- package/cjs/contexts/MdmModuleContext/context.d.ts +8 -0
- package/cjs/contexts/MdmModuleContext/hooks.d.ts +4 -0
- package/cjs/features/workflow/WorkflowComments/WorkflowComments.d.ts +3 -2
- package/cjs/features/workflow/WorkflowComments/WorkflowComments.js +3 -2
- package/cjs/features/workflow/hooks/useWorkflowComments.d.ts +4 -2
- package/cjs/features/workflow/hooks/useWorkflowComments.js +3 -2
- package/cjs/icons/VerificationInvalidIcon.d.ts +3 -0
- package/cjs/icons/VerificationInvalidIcon.js +22 -0
- package/cjs/icons/VerificationMaybeIcon.d.ts +3 -0
- package/cjs/icons/VerificationMaybeIcon.js +22 -0
- package/cjs/icons/VerificationOutdatedIcon.d.ts +3 -0
- package/cjs/icons/VerificationOutdatedIcon.js +22 -0
- package/cjs/icons/VerificationValidIcon.d.ts +3 -0
- package/cjs/icons/VerificationValidIcon.js +22 -0
- package/cjs/icons/VerifyAllIcon.d.ts +3 -0
- package/cjs/icons/VerifyAllIcon.js +26 -0
- package/cjs/index.d.ts +1 -0
- package/cjs/index.js +6 -4
- package/contexts/AttributesVerificationContext/helpers.d.ts +17 -0
- package/contexts/AttributesVerificationContext/helpers.js +126 -0
- package/contexts/AttributesVerificationContext/index.d.ts +19 -0
- package/contexts/AttributesVerificationContext/index.js +45 -0
- package/contexts/MdmModuleContext/context.d.ts +8 -0
- package/contexts/MdmModuleContext/hooks.d.ts +4 -0
- package/features/workflow/WorkflowComments/WorkflowComments.d.ts +3 -2
- package/features/workflow/WorkflowComments/WorkflowComments.js +3 -2
- package/features/workflow/hooks/useWorkflowComments.d.ts +4 -2
- package/features/workflow/hooks/useWorkflowComments.js +3 -2
- package/icons/VerificationInvalidIcon.d.ts +3 -0
- package/icons/VerificationInvalidIcon.js +17 -0
- package/icons/VerificationMaybeIcon.d.ts +3 -0
- package/icons/VerificationMaybeIcon.js +17 -0
- package/icons/VerificationOutdatedIcon.d.ts +3 -0
- package/icons/VerificationOutdatedIcon.js +17 -0
- package/icons/VerificationValidIcon.d.ts +3 -0
- package/icons/VerificationValidIcon.js +17 -0
- package/icons/VerifyAllIcon.d.ts +3 -0
- package/icons/VerifyAllIcon.js +21 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/package.json +2 -2
- package/ReadOnlyComplexAttribute/styles.d.ts +0 -1
- package/ReadOnlyComplexAttribute/styles.js +0 -22
- package/cjs/ReadOnlyComplexAttribute/styles.d.ts +0 -1
- package/cjs/ReadOnlyComplexAttribute/styles.js +0 -25
|
@@ -0,0 +1,19 @@
|
|
|
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.CollaborationButton = void 0;
|
|
7
|
+
var react_1 = __importDefault(require("react"));
|
|
8
|
+
var Badge_1 = __importDefault(require("@mui/material/Badge"));
|
|
9
|
+
var CollaborationIcon_1 = __importDefault(require("../icons/CollaborationIcon"));
|
|
10
|
+
var CollaborationButton_module_css_1 = __importDefault(require("./CollaborationButton.module.css"));
|
|
11
|
+
var CollaborationButton = function (_a) {
|
|
12
|
+
var totalCommentsCount = _a.totalCommentsCount;
|
|
13
|
+
return (react_1.default.createElement(Badge_1.default, { badgeContent: totalCommentsCount, classes: {
|
|
14
|
+
anchorOriginTopRightRectangular: CollaborationButton_module_css_1.default.badgePosition,
|
|
15
|
+
badge: CollaborationButton_module_css_1.default.badge
|
|
16
|
+
} },
|
|
17
|
+
react_1.default.createElement(CollaborationIcon_1.default, null)));
|
|
18
|
+
};
|
|
19
|
+
exports.CollaborationButton = CollaborationButton;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const styles = {"badge":"CollaborationButton-badge--noyiE","badgePosition":"CollaborationButton-badgePosition--30Efs"};
|
|
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 = `.CollaborationButton-badge--noyiE{background-color:#ff4081;color:#fff;font-size:12px;height:18px;min-width:18px}.CollaborationButton-badgePosition--30Efs{right:5px}`;
|
|
7
|
+
head.appendChild(style);
|
|
8
|
+
}
|
|
9
|
+
module.exports = styles;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { CollaborationButton } from './CollaborationButton';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CollaborationButton = void 0;
|
|
4
|
+
var CollaborationButton_1 = require("./CollaborationButton");
|
|
5
|
+
Object.defineProperty(exports, "CollaborationButton", { enumerable: true, get: function () { return CollaborationButton_1.CollaborationButton; } });
|
|
@@ -39,7 +39,8 @@ var ProfileResizablePanes = function (_a) {
|
|
|
39
39
|
var _b = (0, PerspectivesSettingsContext_1.usePerspectivesSettings)(perspectiveId), perspectiveSettings = _b.perspectiveSettings, updatePerspectiveSettings = _b.updatePerspectiveSettings;
|
|
40
40
|
var _c = (perspectiveSettings || {}).width, width = _c === void 0 ? DEFAULT_R_PANE_SIZE : _c;
|
|
41
41
|
var active = !(0, ramda_1.isNil)(defaultTab) ? defaultTab : perspectiveSettings === null || perspectiveSettings === void 0 ? void 0 : perspectiveSettings.active;
|
|
42
|
-
var
|
|
42
|
+
var activeButton = buttonsProps.find(function (button) { return button.id === active; });
|
|
43
|
+
var isSidePanelOpen = !(0, ramda_1.isNil)(active) && !disabled && Boolean(activeButton);
|
|
43
44
|
var handleUpdateSettings = (0, react_1.useCallback)(function (newSetting) {
|
|
44
45
|
updatePerspectiveSettings(newSetting);
|
|
45
46
|
}, [updatePerspectiveSettings]);
|
|
@@ -86,7 +86,7 @@ var setUp = function (props) {
|
|
|
86
86
|
width: 480
|
|
87
87
|
},
|
|
88
88
|
graph: {
|
|
89
|
-
active:
|
|
89
|
+
active: 1,
|
|
90
90
|
width: 320
|
|
91
91
|
}
|
|
92
92
|
}
|
|
@@ -134,10 +134,10 @@ describe('ProfileResizablePanes tests', function () {
|
|
|
134
134
|
expect(react_2.screen.getByRole('button', { name: 'Button 2' })).toBeInTheDocument();
|
|
135
135
|
expect(react_2.screen.getByRole('separator')).toBeInTheDocument();
|
|
136
136
|
});
|
|
137
|
-
it('should render resizable panes with open second pane with defaultTab:
|
|
137
|
+
it('should render resizable panes with open second pane with defaultTab:1', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
138
138
|
var container;
|
|
139
139
|
return __generator(this, function (_a) {
|
|
140
|
-
container = setUp(__assign(__assign({}, defaultProps), { defaultTab:
|
|
140
|
+
container = setUp(__assign(__assign({}, defaultProps), { defaultTab: 1 })).container;
|
|
141
141
|
expect(react_2.screen.getByTestId('content')).toBeInTheDocument();
|
|
142
142
|
expect(react_2.screen.getByTestId('rightPanel')).toBeInTheDocument();
|
|
143
143
|
expect(getSplitPane1(container)).toBeInTheDocument();
|
|
@@ -30,6 +30,7 @@ exports.MultiLineRenderer = void 0;
|
|
|
30
30
|
var react_1 = __importStar(require("react"));
|
|
31
31
|
var ramda_1 = require("ramda");
|
|
32
32
|
var classnames_1 = __importDefault(require("classnames"));
|
|
33
|
+
var react_context_selector_1 = require("@fluentui/react-context-selector");
|
|
33
34
|
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
34
35
|
var ReadOnlyAttributesFactory_1 = require("../../../ReadOnlyAttributesFactory");
|
|
35
36
|
var AttributeTitle_1 = require("../../../AttributeTitle");
|
|
@@ -39,11 +40,14 @@ var OvIcon_1 = require("../../../OvIcon");
|
|
|
39
40
|
var DescriptionIcon_1 = require("../../../DescriptionIcon");
|
|
40
41
|
var ControlAttributeIcon_1 = require("../../../ControlAttributeIcon");
|
|
41
42
|
var MdmModuleContext_1 = require("../../../contexts/MdmModuleContext");
|
|
43
|
+
var AttributesVerificationContext_1 = require("../../../contexts/AttributesVerificationContext");
|
|
44
|
+
var VerificationButton_1 = require("../../../VerificationButton/VerificationButton");
|
|
42
45
|
var styles_1 = require("../../styles");
|
|
43
46
|
var MultiLineRenderer = function (_a) {
|
|
44
47
|
var max = _a.max, values = _a.values, nonVisibleValues = _a.nonVisibleValues, totalVisibleValues = _a.totalVisibleValues, attributeType = _a.attributeType, parentUri = _a.parentUri, requestNextPageOfAttributeValues = _a.requestNextPageOfAttributeValues, showNonOv = _a.showNonOv, totalNonVisibleValues = _a.totalNonVisibleValues, classes = _a.classes;
|
|
45
48
|
var styles = (0, styles_1.useMultiLineStyles)();
|
|
46
49
|
var _b = (0, react_1.useState)(max), visibleValuesCount = _b[0], setVisibleValuesCount = _b[1];
|
|
50
|
+
var isVerificationAttribute = (0, react_context_selector_1.useContextSelector)(AttributesVerificationContext_1.AttributesVerificationContext, function (context) { return (context === null || context === void 0 ? void 0 : context.isVerificationAttribute) || ramda_1.F; });
|
|
47
51
|
var controlAttributes = (0, MdmModuleContext_1.useMdmControlAttributes)();
|
|
48
52
|
var isControlAttribute = (0, react_1.useMemo)(function () { return controlAttributes.includes(attributeType.uri); }, [controlAttributes, attributeType.uri]);
|
|
49
53
|
var hasPaging = max < totalVisibleValues;
|
|
@@ -74,12 +78,14 @@ var MultiLineRenderer = function (_a) {
|
|
|
74
78
|
};
|
|
75
79
|
var shownValues = values.slice(0, visibleValuesCount);
|
|
76
80
|
var hiddenValuesCount = totalVisibleValues - visibleValuesCount;
|
|
81
|
+
var showVerificationButton = isVerificationAttribute(attributeType);
|
|
77
82
|
return (react_1.default.createElement("div", { "data-reltio-id": "multi-line-renderer", className: styles.wrapper },
|
|
78
83
|
react_1.default.createElement("div", { className: styles.titleRow },
|
|
79
84
|
react_1.default.createElement(AttributeTitle_1.AttributeTitle, { label: label, className: (0, classnames_1.default)(styles.title, classes === null || classes === void 0 ? void 0 : classes.title), "data-reltio-id": "reltio-attribute-label" }),
|
|
80
85
|
react_1.default.createElement(DescriptionIcon_1.DescriptionIcon, { description: description }),
|
|
81
86
|
isControlAttribute && react_1.default.createElement(ControlAttributeIcon_1.ControlAttributeIcon, null),
|
|
82
|
-
react_1.default.createElement(OvIcon_1.OvIcon, { nonOvValues: nonVisibleValues, attributeType: attributeType, className: styles.ovIcon, nonOvTotal: totalNonVisibleValues })
|
|
87
|
+
react_1.default.createElement(OvIcon_1.OvIcon, { nonOvValues: nonVisibleValues, attributeType: attributeType, className: styles.ovIcon, nonOvTotal: totalNonVisibleValues }),
|
|
88
|
+
showVerificationButton && react_1.default.createElement(VerificationButton_1.VerificationButton, { attributeType: attributeType })),
|
|
83
89
|
react_1.default.createElement("div", { className: styles.attributes }, shownValues.map(function (value) { return (react_1.default.createElement(ReadOnlyAttributesFactory_1.ReadOnlyAttribute, { key: value.uri, className: (0, classnames_1.default)(styles.attribute, classes === null || classes === void 0 ? void 0 : classes.content), attributeValue: value, attributeType: attributeType, showNonOv: showNonOv, classes: classes })); })),
|
|
84
90
|
showMore && (react_1.default.createElement(ShowMore_1.ShowMore, { moreNumber: (0, ramda_1.min)(max, hiddenValuesCount), valueNumber: hiddenValuesCount, onClick: onShowMore })),
|
|
85
91
|
showLess && react_1.default.createElement(ShowLess_1.ShowLess, { onClick: onShowLess })));
|
|
@@ -39,19 +39,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
39
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
40
|
exports.ReadOnlyComplexAttribute = void 0;
|
|
41
41
|
var react_1 = __importStar(require("react"));
|
|
42
|
+
var ramda_1 = require("ramda");
|
|
42
43
|
var classnames_1 = __importDefault(require("classnames"));
|
|
44
|
+
var react_context_selector_1 = require("@fluentui/react-context-selector");
|
|
43
45
|
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
44
46
|
var Typography_1 = __importDefault(require("@mui/material/Typography"));
|
|
45
47
|
var ReadOnlyAttributesList_1 = require("../ReadOnlyAttributesList");
|
|
46
48
|
var ArrowExpandButton_1 = require("../ArrowExpandButton");
|
|
47
49
|
var CommentsContainer_1 = require("../CommentsContainer");
|
|
48
50
|
var HighlightedValuesContext_1 = require("../contexts/HighlightedValuesContext");
|
|
51
|
+
var AttributesVerificationContext_1 = require("../contexts/AttributesVerificationContext");
|
|
49
52
|
var classnames_2 = require("../constants/classnames");
|
|
50
|
-
var
|
|
53
|
+
var AttributeVerificationStatus_1 = require("../AttributeVerificationStatus/AttributeVerificationStatus");
|
|
54
|
+
var ReadOnlyComplexAttribute_module_css_1 = __importDefault(require("./ReadOnlyComplexAttribute.module.css"));
|
|
51
55
|
var ReadOnlyComplexAttribute = function (_a) {
|
|
52
56
|
var _b;
|
|
53
57
|
var attributeTypesList = _a.attributeTypesList, attributeValue = _a.attributeValue, label = _a.label, _c = _a.expanded, expandedProp = _c === void 0 ? false : _c, children = _a.children, showNonOv = _a.showNonOv, attributeType = _a.attributeType, classes = _a.classes, LabelRenderer = _a.LabelRenderer, RightSlot = _a.RightSlot;
|
|
54
|
-
var styles = (0, styles_1.useStyles)();
|
|
55
58
|
var uri = attributeValue.uri;
|
|
56
59
|
var _d = (0, react_1.useState)(false), expanded = _d[0], setExpanded = _d[1];
|
|
57
60
|
var _e = (0, react_1.useContext)(HighlightedValuesContext_1.HighlightedValuesContext), _f = _e.highlightedValuesUris, highlightedValuesUris = _f === void 0 ? [] : _f, highlightedClassName = _e.highlightedClassName;
|
|
@@ -60,16 +63,20 @@ var ReadOnlyComplexAttribute = function (_a) {
|
|
|
60
63
|
}, [expandedProp]);
|
|
61
64
|
var hasAnalyticValue = (attributeTypesList || []).some(function (attributeType) { return (0, mdm_sdk_1.isAnalyticAttribute)(attributeType); });
|
|
62
65
|
var attributeListEntity = (0, react_1.useMemo)(function () { return (__assign({ attributes: hasAnalyticValue ? null : attributeValue.value, analyticsAttributes: hasAnalyticValue ? attributeValue.value : null }, ((0, mdm_sdk_1.isSpecialAttribute)(attributeType) ? attributeValue.value : {}))); }, [attributeValue, hasAnalyticValue, attributeType]);
|
|
66
|
+
var isVerificationAttribute = (0, react_context_selector_1.useContextSelector)(AttributesVerificationContext_1.AttributesVerificationContext, function (context) { return (context === null || context === void 0 ? void 0 : context.isVerificationAttribute) || ramda_1.F; });
|
|
63
67
|
var objectType = (0, mdm_sdk_1.getObjectTypeByAttributeUri)(attributeValue.uri);
|
|
64
|
-
|
|
65
|
-
|
|
68
|
+
var showVerificationStatus = isVerificationAttribute(attributeType);
|
|
69
|
+
return (react_1.default.createElement("div", { className: ReadOnlyComplexAttribute_module_css_1.default.complexContainer },
|
|
70
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)(ReadOnlyComplexAttribute_module_css_1.default.labelContainer, classnames_2.COMMENTS_CONTAINER_VISIBILITY_AREA) },
|
|
66
71
|
react_1.default.createElement(ArrowExpandButton_1.ArrowExpandButton, { onClick: function () { return setExpanded(function (value) { return !value; }); }, expanded: expanded }),
|
|
67
72
|
LabelRenderer ? (react_1.default.createElement(LabelRenderer, { attributeType: attributeType, attributeValue: attributeValue })) : (react_1.default.createElement(react_1.default.Fragment, null,
|
|
68
|
-
react_1.default.createElement(Typography_1.default, { component: "span", variant: "body2", classes: { body2:
|
|
73
|
+
react_1.default.createElement(Typography_1.default, { component: "span", variant: "body2", classes: { body2: ReadOnlyComplexAttribute_module_css_1.default.label }, className: (0, classnames_1.default)((_b = {},
|
|
69
74
|
_b[highlightedClassName] = highlightedValuesUris.includes(attributeValue.uri),
|
|
70
|
-
_b[
|
|
71
|
-
_b)), "data-reltio-id": "reltio-attribute-complex-label" },
|
|
72
|
-
|
|
75
|
+
_b[ReadOnlyComplexAttribute_module_css_1.default.ovFalse] = !(0, mdm_sdk_1.isOv)(attributeValue),
|
|
76
|
+
_b)), "data-reltio-id": "reltio-attribute-complex-label" },
|
|
77
|
+
label,
|
|
78
|
+
showVerificationStatus && (react_1.default.createElement(AttributeVerificationStatus_1.AttributeVerificationStatus, { attributeType: attributeType, attributeValue: attributeValue }))),
|
|
79
|
+
react_1.default.createElement("div", { className: ReadOnlyComplexAttribute_module_css_1.default.spacer }),
|
|
73
80
|
RightSlot && react_1.default.createElement(RightSlot, { attributeType: attributeType, attributeValue: attributeValue }),
|
|
74
81
|
react_1.default.createElement(CommentsContainer_1.CommentsContainer, { uri: attributeValue.uri, relatedObjectUris: (0, mdm_sdk_1.createRelatedObjectUris)(objectType, {
|
|
75
82
|
uri: attributeValue.uri
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const styles = {"complexContainer":"ReadOnlyComplexAttribute-complexContainer--DybRT","labelContainer":"ReadOnlyComplexAttribute-labelContainer--x4Ikp","label":"ReadOnlyComplexAttribute-label--BqM8F","spacer":"ReadOnlyComplexAttribute-spacer--raB-d","ovFalse":"ReadOnlyComplexAttribute-ovFalse--9sySx"};
|
|
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 = `.ReadOnlyComplexAttribute-complexContainer--DybRT{margin-top:1px}.ReadOnlyComplexAttribute-labelContainer--x4Ikp{display:flex;min-height:18px;--verify-status-opacity:0}.ReadOnlyComplexAttribute-labelContainer--x4Ikp:hover{--verify-status-opacity:1}.ReadOnlyComplexAttribute-label--BqM8F{display:inline-flex;font-size:13px;letter-spacing:normal;line-height:16px;margin-left:2px;white-space:break-spaces}.ReadOnlyComplexAttribute-spacer--raB-d{flex:1}.ReadOnlyComplexAttribute-ovFalse--9sySx{opacity:var(--mui-inactive-opacity)}`;
|
|
7
|
+
head.appendChild(style);
|
|
8
|
+
}
|
|
9
|
+
module.exports = styles;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { AttributeType } from '@reltio/mdm-sdk';
|
|
3
|
+
export declare enum VerificationButtonSize {
|
|
4
|
+
SMALL = "small",
|
|
5
|
+
MEDIUM = "medium"
|
|
6
|
+
}
|
|
7
|
+
type Props = {
|
|
8
|
+
attributeType?: AttributeType;
|
|
9
|
+
size?: VerificationButtonSize;
|
|
10
|
+
className?: string;
|
|
11
|
+
};
|
|
12
|
+
export declare const VerificationButton: ({ attributeType, size, className }: Props) => React.JSX.Element;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,180 @@
|
|
|
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
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
35
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
36
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
37
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
38
|
+
function step(op) {
|
|
39
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
40
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
41
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
42
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
43
|
+
switch (op[0]) {
|
|
44
|
+
case 0: case 1: t = op; break;
|
|
45
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
46
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
47
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
48
|
+
default:
|
|
49
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
50
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
51
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
52
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
53
|
+
if (t[2]) _.ops.pop();
|
|
54
|
+
_.trys.pop(); continue;
|
|
55
|
+
}
|
|
56
|
+
op = body.call(thisArg, _);
|
|
57
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
58
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
62
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
63
|
+
};
|
|
64
|
+
var _a, _b;
|
|
65
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
66
|
+
exports.VerificationButton = exports.VerificationButtonSize = void 0;
|
|
67
|
+
var react_1 = __importStar(require("react"));
|
|
68
|
+
var ramda_1 = require("ramda");
|
|
69
|
+
var classnames_1 = __importDefault(require("classnames"));
|
|
70
|
+
var react_context_selector_1 = require("@fluentui/react-context-selector");
|
|
71
|
+
var CircularProgress_1 = __importDefault(require("@mui/material/CircularProgress"));
|
|
72
|
+
var ui_i18n_1 = __importDefault(require("ui-i18n"));
|
|
73
|
+
var VerifyAllIcon_1 = __importDefault(require("../icons/VerifyAllIcon"));
|
|
74
|
+
var useSafePromise_1 = require("../hooks/useSafePromise");
|
|
75
|
+
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
76
|
+
var MdmModuleContext_1 = require("../contexts/MdmModuleContext");
|
|
77
|
+
var AttributesVerificationContext_1 = require("../contexts/AttributesVerificationContext");
|
|
78
|
+
var errors_1 = require("../helpers/errors");
|
|
79
|
+
var useCssVariableStyles_1 = require("../hooks/useCssVariableStyles");
|
|
80
|
+
var SmallIconButton_1 = require("../SmallIconButton");
|
|
81
|
+
var VerificationButton_module_css_1 = __importDefault(require("./VerificationButton.module.css"));
|
|
82
|
+
var VerificationButtonSize;
|
|
83
|
+
(function (VerificationButtonSize) {
|
|
84
|
+
VerificationButtonSize["SMALL"] = "small";
|
|
85
|
+
VerificationButtonSize["MEDIUM"] = "medium";
|
|
86
|
+
})(VerificationButtonSize || (exports.VerificationButtonSize = VerificationButtonSize = {}));
|
|
87
|
+
var ICON_SIZES = (_a = {},
|
|
88
|
+
_a[VerificationButtonSize.SMALL] = 16,
|
|
89
|
+
_a[VerificationButtonSize.MEDIUM] = 24,
|
|
90
|
+
_a);
|
|
91
|
+
var BUTTON_SIZES = (_b = {},
|
|
92
|
+
_b[VerificationButtonSize.SMALL] = 20,
|
|
93
|
+
_b[VerificationButtonSize.MEDIUM] = 36,
|
|
94
|
+
_b);
|
|
95
|
+
var getTooltipTitle = function (verificationTypes) {
|
|
96
|
+
if (verificationTypes.includes(mdm_sdk_1.InputVerificationAttribute.Email) &&
|
|
97
|
+
verificationTypes.includes(mdm_sdk_1.InputVerificationAttribute.Phone)) {
|
|
98
|
+
return ui_i18n_1.default.text('Verify all email and phone numbers');
|
|
99
|
+
}
|
|
100
|
+
if (verificationTypes.includes(mdm_sdk_1.InputVerificationAttribute.Email)) {
|
|
101
|
+
return ui_i18n_1.default.text('Verify all emails');
|
|
102
|
+
}
|
|
103
|
+
if (verificationTypes.includes(mdm_sdk_1.InputVerificationAttribute.Phone)) {
|
|
104
|
+
return ui_i18n_1.default.text('Verify all phone numbers');
|
|
105
|
+
}
|
|
106
|
+
return null;
|
|
107
|
+
};
|
|
108
|
+
var VerificationButton = function (_a) {
|
|
109
|
+
var attributeType = _a.attributeType, _b = _a.size, size = _b === void 0 ? VerificationButtonSize.SMALL : _b, className = _a.className;
|
|
110
|
+
var variableStyles = (0, useCssVariableStyles_1.useCssVariableStyles)({
|
|
111
|
+
'--icon-size': ICON_SIZES[size] + 'px',
|
|
112
|
+
'--button-size': BUTTON_SIZES[size] + 'px'
|
|
113
|
+
});
|
|
114
|
+
var _c = (0, react_1.useState)(false), loading = _c[0], setLoading = _c[1];
|
|
115
|
+
var entityUri = (0, MdmModuleContext_1.useMdmEntityUri)();
|
|
116
|
+
var updateEntityAttributeValues = (0, MdmModuleContext_1.useMdmAction)('updateEntityAttributeValues');
|
|
117
|
+
var getVerificationType = (0, react_context_selector_1.useContextSelector)(AttributesVerificationContext_1.AttributesVerificationContext, function (context) { return context.getVerificationType; });
|
|
118
|
+
var allVerificationTypes = (0, react_context_selector_1.useContextSelector)(AttributesVerificationContext_1.AttributesVerificationContext, function (context) {
|
|
119
|
+
return context.getAllVerificationTypes();
|
|
120
|
+
});
|
|
121
|
+
var verificationType = attributeType ? getVerificationType(attributeType) : null;
|
|
122
|
+
var verificationAttributeTypeUris = (0, react_context_selector_1.useContextSelector)(AttributesVerificationContext_1.AttributesVerificationContext, function (context) { return context.verificationAttributeTypeUris; });
|
|
123
|
+
var options = (0, react_1.useMemo)(function () {
|
|
124
|
+
if ((0, ramda_1.isNil)(attributeType))
|
|
125
|
+
return {};
|
|
126
|
+
var clientFilter = verificationType === mdm_sdk_1.InputVerificationAttribute.Email
|
|
127
|
+
? mdm_sdk_1.VerifyAttributesClientFilter.EmailVerifier
|
|
128
|
+
: mdm_sdk_1.VerifyAttributesClientFilter.PhoneVerifier;
|
|
129
|
+
return {
|
|
130
|
+
clientFilter: clientFilter
|
|
131
|
+
};
|
|
132
|
+
}, [attributeType, verificationType]);
|
|
133
|
+
var verifySafePromise = (0, useSafePromise_1.useSafePromise)();
|
|
134
|
+
var handleClick = (0, react_1.useCallback)(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
135
|
+
var attributeTypeUris, updatedEntity, error_1;
|
|
136
|
+
return __generator(this, function (_a) {
|
|
137
|
+
switch (_a.label) {
|
|
138
|
+
case 0:
|
|
139
|
+
attributeTypeUris = attributeType ? [attributeType.uri] : verificationAttributeTypeUris;
|
|
140
|
+
setLoading(true);
|
|
141
|
+
_a.label = 1;
|
|
142
|
+
case 1:
|
|
143
|
+
_a.trys.push([1, 3, 4, 5]);
|
|
144
|
+
return [4 /*yield*/, verifySafePromise((0, mdm_sdk_1.verifyAttributes)({ entityUri: entityUri, options: options }))];
|
|
145
|
+
case 2:
|
|
146
|
+
updatedEntity = _a.sent();
|
|
147
|
+
if (updatedEntity) {
|
|
148
|
+
updateEntityAttributeValues({
|
|
149
|
+
updatedEntity: updatedEntity,
|
|
150
|
+
attributeTypeUris: attributeTypeUris
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
return [3 /*break*/, 5];
|
|
154
|
+
case 3:
|
|
155
|
+
error_1 = _a.sent();
|
|
156
|
+
(0, errors_1.showDefaultErrorMessage)(error_1);
|
|
157
|
+
return [3 /*break*/, 5];
|
|
158
|
+
case 4:
|
|
159
|
+
setLoading(false);
|
|
160
|
+
return [7 /*endfinally*/];
|
|
161
|
+
case 5: return [2 /*return*/];
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
}); }, [
|
|
165
|
+
verifySafePromise,
|
|
166
|
+
entityUri,
|
|
167
|
+
options,
|
|
168
|
+
attributeType,
|
|
169
|
+
updateEntityAttributeValues,
|
|
170
|
+
verificationAttributeTypeUris
|
|
171
|
+
]);
|
|
172
|
+
var currentVerificationTypes = (0, react_1.useMemo)(function () {
|
|
173
|
+
if (verificationType)
|
|
174
|
+
return [verificationType];
|
|
175
|
+
return allVerificationTypes;
|
|
176
|
+
}, [verificationType, allVerificationTypes]);
|
|
177
|
+
var tooltipTitle = getTooltipTitle(currentVerificationTypes);
|
|
178
|
+
return (react_1.default.createElement("div", { className: (0, classnames_1.default)(VerificationButton_module_css_1.default.root, className), style: variableStyles }, loading ? (react_1.default.createElement(CircularProgress_1.default, { size: BUTTON_SIZES[size] })) : (react_1.default.createElement(SmallIconButton_1.SmallIconButtonWithTooltip, { icon: VerifyAllIcon_1.default, iconClassName: VerificationButton_module_css_1.default.icon, className: VerificationButton_module_css_1.default.iconButton, tooltipTitle: tooltipTitle, onClick: handleClick }))));
|
|
179
|
+
};
|
|
180
|
+
exports.VerificationButton = VerificationButton;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const styles = {"root":"VerificationButton-root--0piRf","icon":"VerificationButton-icon--hdGgX","iconButton":"VerificationButton-iconButton--OUG-s"};
|
|
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 = `.VerificationButton-root--0piRf{display:inline-block;margin-left:2px}.VerificationButton-root--0piRf .VerificationButton-icon--hdGgX{height:var(--icon-size);width:var(--icon-size)}.VerificationButton-root--0piRf .VerificationButton-iconButton--OUG-s{height:var(--button-size);width:var(--button-size)}`;
|
|
7
|
+
head.appendChild(style);
|
|
8
|
+
}
|
|
9
|
+
module.exports = styles;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { AttributeType, AttributeVerificationConfig, NestedAttributeValue, InputVerificationAttribute } from '@reltio/mdm-sdk';
|
|
2
|
+
export declare enum VerificationStatus {
|
|
3
|
+
VALID = "valid",
|
|
4
|
+
INVALID = "invalid",
|
|
5
|
+
OUTDATED = "outdated",
|
|
6
|
+
MAYBE = "maybe",
|
|
7
|
+
ACCEPT_ALL = "accept_all"
|
|
8
|
+
}
|
|
9
|
+
export declare const getIsVerificationAttribute: (attributeType: AttributeType, attributeVerificationConfig: AttributeVerificationConfig[]) => boolean;
|
|
10
|
+
export declare const getVerificationStatus: (attributeType: AttributeType, attributeValue: NestedAttributeValue, attributeVerificationConfig: AttributeVerificationConfig[]) => {
|
|
11
|
+
status: VerificationStatus;
|
|
12
|
+
lastVerifiedTime: number | null;
|
|
13
|
+
verificationType: InputVerificationAttribute;
|
|
14
|
+
} | null;
|
|
15
|
+
export declare const getVerificationType: (attributeType: AttributeType, attributeVerificationConfig: AttributeVerificationConfig[]) => InputVerificationAttribute;
|
|
16
|
+
export declare const getAllVerificationAttributeTypeUris: (attributeVerificationConfig: AttributeVerificationConfig[], entityTypeUri: string) => string[];
|
|
17
|
+
export declare const getAllVerificationTypes: (attributeVerificationConfig: AttributeVerificationConfig[]) => InputVerificationAttribute[];
|
|
@@ -0,0 +1,137 @@
|
|
|
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.getAllVerificationTypes = exports.getAllVerificationAttributeTypeUris = exports.getVerificationType = exports.getVerificationStatus = exports.getIsVerificationAttribute = exports.VerificationStatus = void 0;
|
|
7
|
+
var moment_1 = __importDefault(require("moment"));
|
|
8
|
+
var ramda_1 = require("ramda");
|
|
9
|
+
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
10
|
+
var VerificationStatus;
|
|
11
|
+
(function (VerificationStatus) {
|
|
12
|
+
VerificationStatus["VALID"] = "valid";
|
|
13
|
+
VerificationStatus["INVALID"] = "invalid";
|
|
14
|
+
VerificationStatus["OUTDATED"] = "outdated";
|
|
15
|
+
VerificationStatus["MAYBE"] = "maybe";
|
|
16
|
+
VerificationStatus["ACCEPT_ALL"] = "accept_all";
|
|
17
|
+
})(VerificationStatus || (exports.VerificationStatus = VerificationStatus = {}));
|
|
18
|
+
var findValueByAttributeUri = function (attributeValue, attributeUri) {
|
|
19
|
+
var _a;
|
|
20
|
+
var entityTypeUri = (0, mdm_sdk_1.getEntityUriFromAttributeUri)(attributeUri);
|
|
21
|
+
var currentValueUriPath = (0, mdm_sdk_1.getAttributeTypeUriByValueUri)(attributeValue.uri, entityTypeUri);
|
|
22
|
+
if (!attributeUri.startsWith("".concat(currentValueUriPath, "/attributes/"))) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
var attrPath = attributeUri.replace("".concat(currentValueUriPath, "/attributes/"), '').split('/attributes/');
|
|
26
|
+
return ((_a = (0, mdm_sdk_1.getOvAttributeValuesByPathWithUri)(attrPath, attributeValue.value)) === null || _a === void 0 ? void 0 : _a[0]) || undefined;
|
|
27
|
+
};
|
|
28
|
+
var findAttributeConfig = function (attributeVerificationConfig, attributeType) {
|
|
29
|
+
return attributeVerificationConfig.find(function (config) {
|
|
30
|
+
return config.inputMapping.some(function (mapping) { return (0, mdm_sdk_1.getParentUri)(mapping.attribute) === attributeType.uri; });
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
var findMappingByVerificationAttribute = function (config, verificationAttributes) {
|
|
34
|
+
return config.outputMapping.find(function (mapping) { return verificationAttributes.includes(mapping.verificationAttribute); });
|
|
35
|
+
};
|
|
36
|
+
var getIsVerificationAttribute = function (attributeType, attributeVerificationConfig) {
|
|
37
|
+
return attributeVerificationConfig.some(function (config) {
|
|
38
|
+
return config.inputMapping.some(function (mapping) {
|
|
39
|
+
return (0, mdm_sdk_1.getParentUri)(mapping.attribute) === attributeType.uri &&
|
|
40
|
+
Object.keys(mdm_sdk_1.InputVerificationAttribute).includes(mapping.verificationAttribute);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
exports.getIsVerificationAttribute = getIsVerificationAttribute;
|
|
45
|
+
var isStatusOutdated = function (dateValue, config) {
|
|
46
|
+
if ((0, ramda_1.isNil)(dateValue)) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
var verifDate = (0, moment_1.default)(dateValue);
|
|
50
|
+
if (!(verifDate === null || verifDate === void 0 ? void 0 : verifDate.isValid())) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
var currentDate = (0, moment_1.default)();
|
|
54
|
+
var maxVerificationAge = config.params.maxVerificationAge;
|
|
55
|
+
var ageInDays = currentDate.diff(verifDate, 'days');
|
|
56
|
+
return ageInDays > maxVerificationAge;
|
|
57
|
+
};
|
|
58
|
+
var getVerificationStatus = function (attributeType, attributeValue, attributeVerificationConfig) {
|
|
59
|
+
var config = findAttributeConfig(attributeVerificationConfig, attributeType);
|
|
60
|
+
if (!config) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
var inputMapping = config.inputMapping.find(function (mapping) { return (0, mdm_sdk_1.getParentUri)(mapping.attribute) === attributeType.uri; });
|
|
64
|
+
var statusMapping = findMappingByVerificationAttribute(config, [
|
|
65
|
+
mdm_sdk_1.OutputVerificationAttribute.Status,
|
|
66
|
+
mdm_sdk_1.OutputVerificationAttribute.IsValid
|
|
67
|
+
]);
|
|
68
|
+
if (!statusMapping) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
var statusValue = findValueByAttributeUri(attributeValue, statusMapping.attribute);
|
|
72
|
+
var valueStatus = statusValue === null || statusValue === void 0 ? void 0 : statusValue.value;
|
|
73
|
+
var dateMapping = findMappingByVerificationAttribute(config, [mdm_sdk_1.OutputVerificationAttribute.VerifiedOn]);
|
|
74
|
+
if (!dateMapping) {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
var dateValue = findValueByAttributeUri(attributeValue, dateMapping.attribute);
|
|
78
|
+
if (!dateValue || !statusValue) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
var verificationStatus = (function () {
|
|
82
|
+
switch (valueStatus) {
|
|
83
|
+
case 'Invalid':
|
|
84
|
+
case 'No':
|
|
85
|
+
return VerificationStatus.INVALID;
|
|
86
|
+
case 'Valid':
|
|
87
|
+
case 'Yes': {
|
|
88
|
+
var isStatusOutdatedResult = isStatusOutdated(dateValue === null || dateValue === void 0 ? void 0 : dateValue.value, config);
|
|
89
|
+
if ((0, ramda_1.isNil)(isStatusOutdatedResult)) {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
if (isStatusOutdatedResult) {
|
|
93
|
+
return VerificationStatus.OUTDATED;
|
|
94
|
+
}
|
|
95
|
+
return VerificationStatus.VALID;
|
|
96
|
+
}
|
|
97
|
+
case 'Maybe':
|
|
98
|
+
case 'Unknown':
|
|
99
|
+
return VerificationStatus.MAYBE;
|
|
100
|
+
case 'Accept_All':
|
|
101
|
+
return VerificationStatus.ACCEPT_ALL;
|
|
102
|
+
default: {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
})();
|
|
107
|
+
if (verificationStatus === null) {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
status: verificationStatus,
|
|
112
|
+
lastVerifiedTime: dateValue === null || dateValue === void 0 ? void 0 : dateValue.value,
|
|
113
|
+
verificationType: inputMapping.verificationAttribute
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
exports.getVerificationStatus = getVerificationStatus;
|
|
117
|
+
var getVerificationType = function (attributeType, attributeVerificationConfig) {
|
|
118
|
+
var _a, _b;
|
|
119
|
+
var config = findAttributeConfig(attributeVerificationConfig, attributeType);
|
|
120
|
+
return ((_b = (_a = config === null || config === void 0 ? void 0 : config.inputMapping) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.verificationAttribute) || null;
|
|
121
|
+
};
|
|
122
|
+
exports.getVerificationType = getVerificationType;
|
|
123
|
+
var getAllVerificationAttributeTypeUris = function (attributeVerificationConfig, entityTypeUri) {
|
|
124
|
+
return attributeVerificationConfig.flatMap(function (config) {
|
|
125
|
+
return config.inputMapping
|
|
126
|
+
.filter(function (mapping) { return mapping.attribute.startsWith(entityTypeUri + '/'); })
|
|
127
|
+
.filter(function (mapping) { return Object.keys(mdm_sdk_1.InputVerificationAttribute).includes(mapping.verificationAttribute); })
|
|
128
|
+
.map(function (mapping) { return (0, mdm_sdk_1.getParentUri)(mapping.attribute); });
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
exports.getAllVerificationAttributeTypeUris = getAllVerificationAttributeTypeUris;
|
|
132
|
+
var getAllVerificationTypes = function (attributeVerificationConfig) {
|
|
133
|
+
return (0, ramda_1.uniq)(attributeVerificationConfig.flatMap(function (config) {
|
|
134
|
+
return config.inputMapping.map(function (mapping) { return mapping.verificationAttribute; });
|
|
135
|
+
}));
|
|
136
|
+
};
|
|
137
|
+
exports.getAllVerificationTypes = getAllVerificationTypes;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { AttributeType, InputVerificationAttribute, NestedAttributeValue } from '@reltio/mdm-sdk';
|
|
3
|
+
import { VerificationStatus } from './helpers';
|
|
4
|
+
type AttributesVerificationContextValue = {
|
|
5
|
+
isVerificationAttribute: (attributeType: AttributeType) => boolean;
|
|
6
|
+
getVerificationStatus: (attributeType: AttributeType, attributeValue: NestedAttributeValue) => {
|
|
7
|
+
status: VerificationStatus;
|
|
8
|
+
lastVerifiedTime: number | null;
|
|
9
|
+
verificationType: InputVerificationAttribute;
|
|
10
|
+
} | null;
|
|
11
|
+
getVerificationType: (attributeType: AttributeType) => InputVerificationAttribute | null;
|
|
12
|
+
verificationAttributeTypeUris: string[];
|
|
13
|
+
getAllVerificationTypes: () => InputVerificationAttribute[];
|
|
14
|
+
};
|
|
15
|
+
export declare const AttributesVerificationContext: import("@fluentui/react-context-selector").Context<AttributesVerificationContextValue>;
|
|
16
|
+
export declare const AttributesVerificationProvider: ({ children }: {
|
|
17
|
+
children: React.ReactNode;
|
|
18
|
+
}) => React.JSX.Element;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,72 @@
|
|
|
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.AttributesVerificationProvider = exports.AttributesVerificationContext = void 0;
|
|
27
|
+
var react_1 = __importStar(require("react"));
|
|
28
|
+
var react_context_selector_1 = require("@fluentui/react-context-selector");
|
|
29
|
+
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
30
|
+
var MdmModuleContext_1 = require("../MdmModuleContext");
|
|
31
|
+
var helpers_1 = require("./helpers");
|
|
32
|
+
exports.AttributesVerificationContext = (0, react_context_selector_1.createContext)(null);
|
|
33
|
+
var AttributesVerificationProvider = function (_a) {
|
|
34
|
+
var children = _a.children;
|
|
35
|
+
var metadata = (0, MdmModuleContext_1.useMdmMetadata)();
|
|
36
|
+
var currentEntity = (0, MdmModuleContext_1.useMdmEntity)();
|
|
37
|
+
var attributeVerificationConfig = (0, react_1.useMemo)(function () {
|
|
38
|
+
var _a;
|
|
39
|
+
var entityType = (currentEntity === null || currentEntity === void 0 ? void 0 : currentEntity.type) && metadata && (0, mdm_sdk_1.getEntityType)(metadata, currentEntity.type);
|
|
40
|
+
return ((_a = entityType === null || entityType === void 0 ? void 0 : entityType.cleanseConfig) === null || _a === void 0 ? void 0 : _a.attributeVerificationConfig) || [];
|
|
41
|
+
}, [currentEntity === null || currentEntity === void 0 ? void 0 : currentEntity.type, metadata]);
|
|
42
|
+
var verificationAttributeTypeUris = (0, react_1.useMemo)(function () {
|
|
43
|
+
return (0, helpers_1.getAllVerificationAttributeTypeUris)(attributeVerificationConfig, currentEntity === null || currentEntity === void 0 ? void 0 : currentEntity.type);
|
|
44
|
+
}, [attributeVerificationConfig, currentEntity === null || currentEntity === void 0 ? void 0 : currentEntity.type]);
|
|
45
|
+
var isVerificationAttribute = (0, react_1.useCallback)(function (attributeType) {
|
|
46
|
+
return (0, helpers_1.getIsVerificationAttribute)(attributeType, attributeVerificationConfig);
|
|
47
|
+
}, [attributeVerificationConfig]);
|
|
48
|
+
var getVerificationStatus = (0, react_1.useCallback)(function (attributeType, attributeValue) {
|
|
49
|
+
return (0, helpers_1.getVerificationStatus)(attributeType, attributeValue, attributeVerificationConfig);
|
|
50
|
+
}, [attributeVerificationConfig]);
|
|
51
|
+
var getVerificationType = (0, react_1.useCallback)(function (attributeType) {
|
|
52
|
+
return (0, helpers_1.getVerificationType)(attributeType, attributeVerificationConfig);
|
|
53
|
+
}, [attributeVerificationConfig]);
|
|
54
|
+
var getAllVerificationTypes = (0, react_1.useCallback)(function () {
|
|
55
|
+
return (0, helpers_1.getAllVerificationTypes)(attributeVerificationConfig);
|
|
56
|
+
}, [attributeVerificationConfig]);
|
|
57
|
+
var contextValue = (0, react_1.useMemo)(function () { return ({
|
|
58
|
+
isVerificationAttribute: isVerificationAttribute,
|
|
59
|
+
getVerificationStatus: getVerificationStatus,
|
|
60
|
+
getVerificationType: getVerificationType,
|
|
61
|
+
verificationAttributeTypeUris: verificationAttributeTypeUris,
|
|
62
|
+
getAllVerificationTypes: getAllVerificationTypes
|
|
63
|
+
}); }, [
|
|
64
|
+
isVerificationAttribute,
|
|
65
|
+
getVerificationStatus,
|
|
66
|
+
getVerificationType,
|
|
67
|
+
verificationAttributeTypeUris,
|
|
68
|
+
getAllVerificationTypes
|
|
69
|
+
]);
|
|
70
|
+
return (react_1.default.createElement(exports.AttributesVerificationContext.Provider, { value: contextValue }, children));
|
|
71
|
+
};
|
|
72
|
+
exports.AttributesVerificationProvider = AttributesVerificationProvider;
|